PHPUnit: Expectation failed
PHPUnitでモックの期待値が満たされなかった場合のエラー
概要
PHPUnitでモックオブジェクトの期待値(呼び出し回数、引数など)が満たされなかった場合に発生するエラーです。
エラーメッセージ
Expectation failed for method name is "send" when invoked 1 time(s).
Method was expected to be called 1 times, actually called 0 times.
または
PHPUnit\Framework\ExpectationFailedException: Failed asserting that 'actual' matches expected 'expected'.
原因
- モックの設定ミス: メソッド名やインターフェースの誤り
- 呼び出し回数: 期待した回数と実際の呼び出し回数の不一致
- 引数の不一致: 期待した引数と実際の引数の違い
- 依存性注入: モックが正しく注入されていない
解決策
1. 基本的なモック
| |
2. 呼び出し回数の指定
| |
3. 引数のマッチング
| |
4. 戻り値の設定
| |
5. 部分モック
| |
6. スパイパターン
| |
7. プロフェシー(代替)
| |
8. データプロバイダー
| |
9. 例外のテスト
| |
10. セットアップとティアダウン
| |
よくある間違い
expects()とmethod()の順序を間違える- インターフェースではなく具象クラスをモック(可能だが非推奨)
with()で配列を渡す際に$this->equalTo()を忘れる- 依存するモックを実際のオブジェクトに渡し忘れる
この記事は役に立ちましたか?