リアクティブプログラミングに興味があったので、 リアクティブRESTful Webサービスの構築 ガイドで少し遊んだ。そして、forwradを動かして、いくつかのユニットテストを追加したかった。
ハンドラー(RouterFunction
)をプレーンなJunit/Mockitoテストでテストしようとしました。ただし、リアクティブであるため、ハンドラーは_Mono<ServerResponse>
_を返します。そのため、ServerResponse
ステータスをテストするためにblock()
する必要がありましたが、テストするために彼の体を抽出することができませんでした。 Webで解決策を検索しているときに、すべてのサンプルがWebTestClient
を使用しているようです。
私の質問は:
すべてのサンプルがWebTestClient
を使用してリアクティブRESTサービスをテストし、ServerResponse
の本体を(単体)テストするのは簡単ではないことを考えると。 RouterFunction
を単体テストすることをお勧めしますか、それとも常にWebTestClient
を使用してより広範なテストを実行することをお勧めしますか?
どうもありがとう。
ベストプラクティスはWebTestClient
を使用することのようです。ただし、これはサーバーを実行しなくても使用できます。
spring-test
モジュールには、WebFluxサーバーエンドポイントのテストに使用できるWebTestClient
が含まれています実行中のサーバーの有無にかかわらず。