これは、PHPUnitで無駄にした時間を他の誰かを救おうとするほどの問題ではありません。
私の問題は、依存テストで使用したときに、モックオブジェクトが期待値を返さないことでした。PHPUnitは、構文によってそのように見えても、依存するテスト間で同じオブジェクトを保持しないようです。
PHPUnitがこれを行う理由を誰かが知っていますか?これはバグですか?PHPUnitでのこのようなものは、使用するのを非常に苛立たせます。
<?php
class PhpUnitTest
extends PHPUnit_Framework_TestCase
{
private $mock;
public function setUp()
{
$this->mock = $this->getMock('stdClass', array('getFoo'));
$this->mock->expects( $this->any() )
->method('getFoo')
->will( $this->returnValue( 'foo' ) );
}
public function testMockReturnValueTwice()
{
$this->assertEquals('foo', $this->mock->getFoo());
$this->assertEquals('foo', $this->mock->getFoo());
return $this->mock;
}
/**
* @depends testMockReturnValueTwice
*/
public function testMockReturnValueInDependentTest($mock)
{
/* I would expect this next line to work, but it doesn't! */
//$this->assertEquals('foo', $mock->getFoo());
/* Instead, the $mock parameter is not the same object as
* generated by the previous test! */
$this->assertNull( $mock->getFoo() );
}
}