facebook twitter hatena line google mixi email

Php/phpunit/モックオブジェクト/依存するロジックを含む場合

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

依存するクラスの解決法

モックできない場合は、できるように修正する

  • UserGetLogic.php(テスト対象修正前
class UserGetLogic
{
  public function getUserId()
  {
    $user = new UserClass();
    return $user->getId();
  }
}
  • UserGetLogic.php(テスト対象修正後
class UserGetLogic
{
  private $_user;
  public function getUser()
  {
    return new UserClass();
  }
  public function getUserId()
  {
    $user = $this->getUser();
    return $user->getId();
  }
}
  • UserGetLogicTest.php(テストコード
class UserGetLogicTest extends PHPUnit_Framework_TestCase
{
  public function testGetUserId()
  {
    // userClassのモック作成
    $userClassMock = $this->getMock('UserClass', array('getId'));
   $userClassMock->expects($this->any())-method('getId')->will($this->returnValue(10));
    // logicのモック作成
    $logic = $this->getMock('UserGetLogic', array('getUser'));
    $logic->expects($this->any())->method('getUser')->will($this->returnValue($userClassMock));
    $id = $logic->getUserId();
  }
}