私はPhpUnitを使用して自分のPHPコードをテストしています。多くの開発者は、クエリメソッドに期待をかけるのは悪い習慣であると言います。これは、何かを返すだけで、システムの状態(CQS)を変更しないメソッドです。期待は、コマンド型のメソッドに対してのみ使用する必要があります。例:PHPunit:疑似クエリ型メソッドで期待通りに呼び出すのは悪い習慣ですか?
$this->validatorMock->expects($this->once())
->method('isValid')
->with('foo')
->willReturn(true)
実装にしっかりとテストを結合するので、悪い習慣と考えられます。正しい方法:しかし
$this->validatorMock->method('isValid')
->willReturn(true);
私は例えば、ある種の検証の結果に依存して、テストクラス:
if ($this->validator->isValid($data) {
// some logic
} else {
// some other logic
}
だ場合、私はその方法に期待をかけたりすべきではないでしょうか?これはクエリ型のメソッドですが、呼び出されたことをテストすることが重要です。データが検証されたことを知りたい。
もちろんisValidメソッド自体は状態を変更するが、ちょうど入力に基づいて値を返さない関数がたくさんある別々のTestClassを(バリデータクラスをテストする1)に
あなたの答えに感謝しますが、私はあなたが私の質問を理解したとは思わない。私はisValidがテストされるべきかどうかを問わず、別のtestClassでテストされます。私はそのメソッドを嘲笑するときに、私はそのメソッドに期待しているかどうかを尋ねていますか? –
ああ、その場合はそれに依存します。バリデータを呼び出すクラスをテストして、異なる結果を処理する方法を確認する場合は、その結果(実際にはスタブ)を返すモックが必要です。別のテストでは、バリデータがまったく呼び出されているかどうかを知りたければ、特定の結果値は必要ありません。 – GolezTrol