我正在研究phpunit中的測試,並且遇到了一個問題。我在我的課上有一個公共職能,我正在測試。根據傳遞給方法的參數,我的測試類中的受保護函數將被調用一次或兩次。我目前有一個測試來檢查返回數據是否正確,但我還想確保被保護的方法被調用正確的次數。PHPUnit測試函數被稱爲多少次
我知道一個模擬對象將允許我計算函數被調用的次數,但它也會覆蓋受保護函數返回的值。我試着使用一個沒有「will」部分的模擬對象,但它只會返回null,而不是保護方法的實際值。
ExampleClass中
public function do_stuff($runTwice){
$results = do_cool_stuff();
if($runTwice){
$results = 2 * do_cool_stuff();
}
return $results;
}
protected function do_cool_stuff()
{
return 2;
}
在我的測試,我想檢查do_cool_stuff()是否被調用一次或兩次,但我還是想兩個函數的返回值是一樣的,所以我可以測試這些作爲以及在我的單元測試中。
tl; dr 我想統計測試對象中被保護方法的調用次數(就像你可以用模擬對象做的那樣),但我仍然希望我的測試方法中的所有方法都返回它們的正常值值(不像模擬對象)。