呼び出されていないとき()がエラーを報告しません、私は、次のモックオブジェクトを持っている期待し:PHPのモック - >
$permutator = $this->getMockBuilder('PermutationClass',
array('get_permutation'))->disableOriginalConstructor()->getMock();
$permutator->expects($this->at(0))
->method('get_permutation')
->will($this->returnCallback(function($praram1) {
return true;
}));
$permutator->expects($this->at(1))
->method('get_permutation')
->will($this->returnCallback(function($praram1) {
return true;
}));
しかし、私が経験したことは「1」で、もし何らかの理由で呼び出しです実行されることはありません。その場合、決して満たされない期待に関するエラーは報告されません。
私は、次のコードを追加する場合:権利を期待する前に:
$permutator->expects($this->exactly(2))->method('get_permutation');
は、次に何が起こるかは与えられた期待が呼び出されなかった場合は、エラーが報告されるということです。しかし、ここで何が起きるのか何らかの理由で、私はそれを設定しなかったので、mockオブジェクトの戻り値はNULLになります。私はそうのようにそれを設定した場合:
$permutator->expects($this->exactly(2))->method('get_permutation')->will($this->returnValue("THIS SHOULD NEVER BE RETURNED"));
その後、これは、その関数の予想されるメソッド呼び出しのすべての戻り値となります。だから、(0)で、かつ(1)で実行されるのですか(私はいくつかのprint文を設定)が、戻り値はこれで上書きされます。
$permutator->expects($this->exactly(2))->method('get_permutation');
私が使用して正常な動作を得ることができた:
$permutator->expects($this->exactly(2))
->method('get_permutation')
->will($this->onConsecutiveCalls(
$this->returnCallback(function($praram1) {
return true;
}),
$this->returnCallback(function($praram1) {
return false;
})
)
);
私は何を得ているのですが、モックオブジェクトは、私が明確に予想を設定したときに、$ this-> at(1)が呼び出されることはないと不平を言うのはなぜですか?
メソッドが呼び出されていないことを確認してください。私は$ this-> at()を使って簡単な例を作り、メソッドが一度だけ呼び出されるとテストに失敗します。私はあなたのコードに何か他のことが起こっていると思います。 – Schleis