facebook twitter hatena line google mixi email

Php/phpunit/モックオブジェクト/テスト対象がconstructを含まない場合

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

constructを実行せずに、テストしたい場合のサンプル

サンプル

  • application/point
class Point
{
    private $_point = 0;
    public function __construct($point)
    {
        $this->_point = $point;
    }
    public function add($point)
    {
        $this->_point += $point;
        return $this;
    }
    public function getPoint()
    {
        return $this->_point;
    }
}
  • test/application/PointMockConstructTest.php
require_once __DIR__ . '/../../application/Point.php';
class PointMockConstructTest extends PHPUnit_Framework_TestCase
{
    public function testGetPoint()
    {
        // Point クラスのスタブを作成します (テスト対象クラスにconstructがあっても無視します。
        $stub = $this->getMockBuilder('Point')
                     ->disableOriginalConstructor()
                     ->getMock();
        // スタブの設定を行います
        $stub->expects($this->any())
             ->method('getPoint')
             ->will($this->returnValue(10));
        // $stub->getPoint() をコールすると 10 を返すようになります
        $this->assertThat($stub->getPoint(), $this->equalTo(10));
    }
}