Laravel プロジェクト (PHP 8.0 上の Laravel 8) で、内部エンドポイントをテストする機能テストがあります。エンドポイントには、サービスのメソッドを呼び出すコントローラーがあります。次に、サービスはサードパーティのエンドポイントの呼び出しを試みます。私がシミュレートしたいのはこのサードパーティのエンドポイントです。現在の状況は次のとおりです:
Guzzle のドキュメントを見ましたが、MockHandler
戦略ではテストで http リクエストを実行する必要があるようですが、これは私のテストで望んでいることではありません。 Guzzle の http クライアントをモックして、テストで指定できるカスタム http 応答を返したいと考えています。次のように Guzzle の http クライアントをエミュレートしようとします:
しかし、InternalService
はテストではこのモックにヒットしないようです。
Http Fake も考えて使ってみましたが、うまくいきませんでした。Guzzle の http クライアントは Laravel の http クライアントを拡張していないと思います。
この問題を解決し、サードパーティのエンドポイントを模擬する最善の方法は何ですか?
###編集### の代わりに $this->app->singleton
を使用する必要があったことです。 DI 構成が異なります:
AppServiceProvider.php
依存関係の注入に応じて、モックされた応答を返すカスタム Guzzle http クライアントを使用して、
リーリーInternalService
をbind
またはsingleton
にしたいとします。たとえば、次のようになります。 :参照: PHPUnit を使用した Laravel コントローラー内の単体テスト