PHPUnit でプライベート メソッドをモックする方法
問題:
特定のシナリオでは、テストクラスの特定のセクションは、内部で呼び出されるプライベート メソッドが存在するため、困難になる場合があります。プライベート メソッドの結果をスタブして目的のコードをテストするにはどうすればよいですか?
答え:
パブリック API の重要性:
通常、クラスをテストするときは、クラスが提供するコントラクトを表すパブリック API に焦点を当てることをお勧めします。プライベート メソッドとプロテクト メソッドは実装の詳細であり、テストの安定性に影響を与えるべきではありません。
グローバル状態変更のテスト:
場合によっては、プライベート メソッドにロジックが含まれる場合があります。それはグローバルな状態に依存するため、テストが困難になります。これに対処するには、コードをリファクタリングしてグローバル状態を削除し、クラスに注入できる依存関係を導入することを検討してください。
プライベート メソッドをモックするためのモッキング フレームワークの使用:
Ifプライベート メソッドを直接テストすることは避けられないため、PHPUnit はモック フレームワークを使用してプライベート メソッドをモックする方法を提供します。ただし、このアプローチはカプセル化を破壊し、実装の詳細に過度に依存する可能性があるため、一般的に推奨されません。
PHPUnit を使用してプライベート メソッドをモックするには、次の手順に従います。
「プラグマティック単体テスト」からの引用:
「一般に、テストのためにカプセル化を解除したくありません...ほとんどの場合、クラスのパブリック メソッドを実行することでクラスをテストできるはずです。"
以上がPHPUnit でプライベート メソッドを (本当に) モックできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。