ホームページ  >  記事  >  Java  >  HTTP リクエストをシミュレートし、コントローラーを呼び出すコード

HTTP リクエストをシミュレートし、コントローラーを呼び出すコード

不言
不言転載
2019-03-14 11:04:333243ブラウズ

この記事では、コントローラーを呼び出す HTTP リクエストのシミュレーションに関するコードを紹介します。これには特定の参考値があります。必要な友人は参照できます。お役に立てば幸いです。

前に書いた

MockMvc は Http リクエストのシミュレーションを実装しており、ネットワーク フォームを直接使用してコントローラー呼び出しに変換できるため、テストが高速化されます。高速でネットワーク環境に依存しません。一連の検証ツールも提供します。

単一のテスト コードは次のとおりです:

@RunWith(SpringRunner.class)
@WebMvcTest(MyController.class)
public class MyControllerTest {
  @Autowired
  private MockMvc mockMvc;
  /**
   * 测试方法
   */
  private void bindAndUnbindTenantPoiTest() throws Exception {
    MvcResult mvcResult = mockMvc.perform(post(${"访问的url"})
        .param("${key1}", "${value1}")
        .param("${key2}", "${value2}")
        .param("${key3}", "${value3}")) 
        .andDo(print()) // 定义执行行为
        .andExpect(status().isOk()) // 对请求结果进行验证
        .andReturn(); // 返回一个MvcResult
    jsonObject = toJsonObject(mvcResult);
    assert jsonObject.getIntValue("code") == code; // 断言返回内容是否符合预期
    assert message.equals(jsonObject.getString("message"));
  }  
}

Perform の概要

perform は、コントローラーのビジネス ロジックを呼び出すために使用されます。post や get などの多くのメソッドがあります。 Junit MockMvc Mockito 単体テストの使用を参照してください。HTTP リクエスト

パラメータ パラメータの概要

param を介して http リクエスト パラメータを追加します。形式は K-V、1 つのパラメータを 1 つのパラメータに追加するか、MultiValueMap を通じて params を使用します。 parma のソース コードの一部は次のとおりです。

/**
     * Add a request parameter to the {@link MockHttpServletRequest}.
     * 

If called more than once, new values get added to existing ones.      * @param name the parameter name      * @param values one or more values      */     public MockHttpServletRequestBuilder param(String name, String... values) {         addToMultiValueMap(this.parameters, name, values);         return this;     }     /**      * Add a map of request parameters to the {@link MockHttpServletRequest},      * for example when testing a form submission.      * 

If called more than once, new values get added to existing ones.      * @param params the parameters to add      * @since 4.2.4      */     public MockHttpServletRequestBuilder params(MultiValueMap params) {         for (String name : params.keySet()) {             for (String value : params.get(name)) {                 this.parameters.add(name, value);             }         }         return this;     }

最後に書かれています

もう 1 つの落とし穴は、アノテーションを使用するときに、アノテーション間に重複があるかどうかを確認してください。重複していないとエラーが報告されます。 @WebMvcTest @Configuration を同時に使用するのは間違っています。詳細については、注釈ソース コード

# を参照してください。

以上がHTTP リクエストをシミュレートし、コントローラーを呼び出すコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。