mockMvcチュートリアル

1.模擬試験の紹介

  • 定義されている
    細胞試験において、いくつかのテストのために仮想オブジェクトを生成する方法を用いて、容易に目的のために構成されていないか、容易にアクセスできません。
  • なぜ模擬テスト
    • モジュール開発の間の結合を避けます。
    • 、軽量、シンプルで柔軟な。

2. MockMVCはじめに

RESTfulなSpringMVCユニットのベースのテストは、制御プロセッサにURL要求から、すなわち、完全SpringMVCプロセスをテストすることができ、ビューのレンダリングに試験することができます。

2.1 MockMvc

  • SpringMVCテストサーバーのメインエントリポイント。
  • 静的メソッドMockMVCBuildersビルダーによってMockMVCBuilder構造によってMockMVCBuilder、MockMvcを構築します。
  • コア方法:実行 RequestBuilderを行ってください(RequestBuilder RB)は、自動的にSpringMVCと対応するプロセスコントローラにマッピングされた処理を実行し、戻り値がResultActionsで実行します。

2.2 MockMVCBuilder

  • MockMVCBuilder MockMvcを構築するためのモデルビルダーを使用して構成。
  • :2つの実装がありStandaloneMockMvcBuilderDefaultMockMvcBuilderが
  • 使用することができます作成されたstaticファクトリMockMvcBuilders、あなたは上記の二つの実装クラスを直接使用する必要はありません。

2.3 MockMVCBuilders

  • オブジェクトを作成するためのMockMVCBuilder責任を負います。
  • 作成するには、2つの方法があります。
    • standaloneSetup(オブジェクト...コントローラは):何がコンテキストから取得するようにパラメータは、コントローラのセットを指定します。
    • webAppContextSetup(WebApplicationContext WAC):WebApplicationContextは、それぞれのコントローラから取得され、対応するコンテキストMockMvcを与えるために指定

2.4 MockMvcRequestBuilders

  • リクエストを構築するための要求。
  • 二つの主要なサブクラスがありMockHttpServletRequestBuilderMockMultipartHttpServletRequestBuilder(例えばアップロードが使用するファイルなど)、すなわち、必要なデータのモックのためのすべてのクライアント要求は。

2.5 ResultActions

  • andExpect:、ResultMatcher検証ルールを追加します。コントローラは、完全な結果が正しい行いを確認します。
  • andDo:そのようなデバッグ時にコンソールに印刷して、ResultHandler結果プロセッサを追加します。
  • andReturnは:最終的に、対応する戻りMvcResult、次のステップのカスタム認証および/非同期処理。
  • MockMvcResultMatchers
    • **検証の要求を実行した結果と一致します。
    • マッチが失敗した場合は、適切な例外がスローされます。
    • これは、検証APIのメソッドの多くが含まれています。
  • MockMvcResultHandlers
    • 結果プロセッサは、結果に何かをすることを約束しました。
    • 本明細書で使用される場合、そのようなMockMvcResultHandlers.print()全体の出力に応じて情報をもたらします。

2.6 MvcResult

ユニットテストの実行、結果がために実行することができるカスタム検証ロジックデータを検証するためのアサーションを使用します。

コードは以下の通りであります:

輸入 静的org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get。
輸入 静的org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post。
輸入 静的org.springframework.test.web.servlet.result.MockMvcResultMatchers.status。

輸入org.json.JSONArray;
輸入org.json.JSONObject;
輸入org.junit.Assert。
輸入org.junit.Before;
輸入org.junit.Test;
輸入org.junit.runner.RunWith;
輸入org.springframework.beans.factory.annotation.Autowired;
インポートorg.springframework.boot.test.context.SpringBootTest;
輸入org.springframework.http.MediaType。
輸入org.springframework.test.context.ContextConfiguration。
輸入org.springframework.test.context.junit4.SpringJUnit4ClassRunner。
輸入org.springframework.test.context.web.WebAppConfiguration。
輸入org.springframework.test.web.servlet.MockMvc;
輸入org.springframework.test.web.servlet.MvcResult;
輸入org.springframework.test.web.servlet.setup.MockMvcBuilders。
輸入org.springframework.web.context.WebApplicationContext; 

輸入com.boke.Application。



/ ** 
 *演示MockMVC使用 
 * @authorのzenglingsheng
  * / 
@RunWith(SpringJUnit4ClassRunner。クラス
@ContextConfiguration 
@WebAppConfiguration 
@SpringBootTest(クラス =応用クラスパブリック クラスNewApiControllerTest {
     プライベートMockMvc mockMvc。

    @Autowired 
    プライベートWebApplicationContext webApplicationContext。

    @Before 
    公共 ボイドセットアップが()スロー例外{ 
        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).buildを(); 
    } 
   
    
    @Test
    公衆 のボイド testEquipmenttypes()スロー例外{ 
        MvcResult authResult = ヌル; 
        authResult = mockMvc.perform(取得( "/ API /作業項目/ equipmenttypes")// 。やり方は、インターフェースを呼び出すために慣れる 
                .contentType(MediaType.APPLICATION_XHTML_XML)// リクエストパラメータを入力 
                .PARAM( "セッションID"、 "ZlbpLxXw")// パラメータ(-s)の要求を
        ).andExpect(ステータス()ISOK())。
                .andReturnを(); 
        // データを取得 
        jSONObject jsonObjectは= 新しい新しい  jSONObject( authResult.getResponse()getContentAsString());. 
        JSONArray jsonArrayData=(JSONArray)jsonObject.get(「データ」); 
        
        //は、最初の配列の値を取得し、照会の結果が決定されます。
        = JsonObject_data JSONObjectのNULL ;
         IF(jsonArrayData.length()> 0 ){ 
            jsonObject_data =(JSONObject)jsonArrayData.get(0 ); 
        } 
        // アサーション判定属性値を追加します。
        Assert.assertNotNull(jsonObject.get( "ERROR_CODE" )); 
        Assert.assertEquals(jsonObject.get( "ERROR_CODE")、0 ); 
        Assert.assertNotNull(jsonObject.get( "ERROR_MSG" )); 
        Assert.assertEquals(jsonObject。 (GET "ERROR_MSG")、 "成功した操作" )。
        Assert.assertNotNull(jsonObject.get( "データ" )); 
        Assert.assertNotNull(jsonObject_data)。
        Assert.assertEquals(jsonObject_data.get( "equipmentty")、1 )。
        Assert.assertEquals(jsonObject_data.get( "equipmenttypename")、 "XXXXX" ); 
        
   
    } 
}

これは、底部に試験されている項目の具体的なフォーマットに従って、試験データ、試験データです。孟新しいものは、偉大な神をスプレーしないでください。

 

関連記事します。https://www.jianshu.com/p/94e5de3f28c9

 

おすすめ

転載: www.cnblogs.com/zengls/p/11316454.html