インターフェース MockMvcWebTestClient


public interface MockMvcWebTestClient
サーバーリクエスト処理のために MockMvc を使用して WebTestClient を介して Spring MVC アプリケーションをテストするためのメインクラス。

WebTestClient が接続する MockMvc を初期化するための静的ファクトリメソッドと仕様を提供します。例:

 WebTestClient client = MockMvcWebTestClient.bindToController(myController)
         .controllerAdvice(myControllerAdvice)
         .validator(myValidator)
         .build()
 

クライアント自体も構成できます。例:

 WebTestClient client = MockMvcWebTestClient.bindToController(myController)
         .validator(myValidator)
         .configureClient()
         .baseUrl("/path")
         .build();
 
導入:
5.3
作成者:
Rossen Stoyanchev
  • メソッドの詳細

    • bindToController

      static MockMvcWebTestClient.ControllerSpec bindToController(ObjectSE... controllers)
      リクエストを処理するための @Controller インスタンスを提供することにより、WebTestClient の作成を開始します。

      内部的には、これは MockMvcBuilders.standaloneSetup(Object...) の使用に委譲され、同等です。MockMvc を初期化します。

    • bindToApplicationContext

      static MockMvcWebTestClient.MockMvcServerSpec<?> bindToApplicationContext(WebApplicationContext context)
      Spring MVC インフラストラクチャーとコントローラーを WebApplicationContext に提供することにより、WebTestClient の作成を開始します。

      内部的には、これは MockMvcBuilders.webAppContextSetup(WebApplicationContext) を使用して MockMvc を初期化することに委譲され、同等です。

    • bindTo

      static WebTestClient.Builder bindTo(MockMvc mockMvc)
      サーバーとして使用するために、すでに初期化された MockMvc インスタンスを提供することにより、WebTestClient の作成を開始します。
    • resultActionsFor

      static ResultActions resultActionsFor(ExchangeResult exchangeResult)
      このメソッドを使用して、サーバーレスポンスの状態に基づいて、特定の ExchangeResult にさらにアサーションを適用できます。

      通常、WebTestClient は、HTTP ステータス、ヘッダー、本文などのクライアントレスポンスをアサートするために使用されます。HTTP 経由でライブリクエストを行うときに利用できるのはこれだけです。ただし、サーバーが MockMvc の場合、サーバーのレスポンスに対してさらに多くのアサーションが可能です。モデル属性、フラッシュ属性など。

      例:

       EntityExchangeResult<Void> result =
                      webTestClient.post().uri("/people/123")
                                      .exchange()
                                      .expectStatus().isFound()
                                      .expectHeader().location("/persons/Joe")
                                      .expectBody().isEmpty();
      
       MockMvcWebTestClient.resultActionsFor(result)
                      .andExpect(model().size(1))
                      .andExpect(model().attributeExists("name"))
                      .andExpect(flash().attributeCount(1))
                      .andExpect(flash().attribute("message", "success!"));
       

      メモ: このメソッドは、リクエストの実行に使用される WebTestClient がこのクラスのバインドメソッドの 1 つを介して初期化された場合にのみ機能するため、リクエストは MockMvc によって処理されます。