類:PHPUnit的,模擬的,willReturnCallback()犯規預期工作
class TestMe
{
public function m1 (array &$a)
{
}
public function m2 (array &$a)
{
}
public function methodd()
{
$a = array();
$this->m1 ($a);
$this->m2 ($a);
return $a;
}
}
測試:
class X extends PHPUnit_Framework_TestCase
{
public function testMethod()
{
$mock = $this->getMock('TestMe', array('m1','m2'));
$mock->expects($this->once())->method('m1')->with(array())->willReturnCallback(function (&$x) { $x['a'] = 1; });
$mock->expects($this->once())->method('m2')->with(array('a' => 1))->willReturnCallback(function (&$x) { $x['b'] = 2; });
$x = $mock->methodd();
$this->assertEquals (array('a' => 1, 'b' => 2), $x);
}
}
莫名其妙地失敗:
有1失敗:
1 )X :: testMethod 方法名稱的期望失敗等於調用1次(s)時。 調用TestMe :: m1(Array(...))的參數0與預期值不匹配。 失敗斷言兩個數組是相等的。 ---預期 +++實際 @@ @@ 陣列( + '一個'=> 1 + 'B'=> 2 )
FAILURES! 測試:1,斷言:2,失敗:1.
我不知道它可能是什麼。換句話說,我想修改一個「參考」參數,並檢查它:)