0
我有這樣的代碼我的單元測試裏面:爲什麼PHPUnit沒有將此函數計算爲已運行?
// $item_id was defined above
$originalMock = $this->getMock('Item', array('foo'), array(
$item_id
));
$originalMock->expects($this->once())->method('foo');
$originalMock->functionThatCallsFoo();
它說我不叫foo
可言,即使functionThatCallsFoo
& foo
從內var_dumping出來。
公用函數和我期望的函數之間有幾個函數調用。我確定沒有靜態函數叫做鏈。 (最初有,但我改變了他們,看看我是否可以在任何得到這個工作)
編輯 我改變了我的電話expects
匹配從functionThatCallsFoo
直接調用,它仍然沒有奏效的方法。
你沒有在'getMock()'中指定模擬方法的列表。第二個參數應該是'array('foo')'not'null' –
@MikeB「當提供第二個(可選)參數時,只有名稱在數組中的方法被替換爲一個可配置的測試double。其他方法沒有改變。「 http://www.phpunit.de/manual/3.6/en/test-doubles.html我想嘲笑整個班級,因爲有幾個中介功能 –
是的,你的意圖是改變'foo( )「對嗎?你將無法計算你的類中具體的'foo()'方法的調用,只有模擬/存根方法。 –