Heim > Java > javaLernprogramm > Hauptteil

Code, der HTTP-Anfragen simuliert und den Controller aufruft

不言
Freigeben: 2019-03-14 11:04:33
nach vorne
3254 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit dem Code zum Simulieren von HTTP-Anfragen zum Aufrufen des Controllers. Er hat einen gewissen Referenzwert. Ich hoffe, dass er für Sie hilfreich ist.

Vorher geschrieben

MockMvc implementiert die Simulation von HTTP-Anfragen und kann das Netzwerkformular direkt verwenden und in Controller-Aufrufe konvertieren, wodurch die Testgeschwindigkeit erhöht wird schneller Schnell und unabhängig von der Netzwerkumgebung. Es bietet auch eine Reihe von Verifizierungstools.

Der einzelne Testcode lautet wie folgt:

@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"));
  }  
}
Nach dem Login kopieren

Perform-Einführung

perform wird zum Aufrufen der Controller-Geschäftslogik verwendet. Es gibt viele Methoden wie Post und Get , siehe Verwenden von Junit+MockMvc +Mockito-Komponententests HTTP-Anfragen

Parameter-Param-Einführung

Http-Anforderungsparameter über param hinzufügen, das Format ist K-V, einen Parameter einen Parameter hinzufügen oder MultiValueMap< hinzufügen String, String> bis params . Ein Teil des Quellcodes von Parma lautet wie folgt:

/**
     * Add a request parameter to the {@link MockHttpServletRequest}.
     * <p>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.
     * <p>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<String, String> params) {
        for (String name : params.keySet()) {
            for (String value : params.get(name)) {
                this.parameters.add(name, value);
            }
        }
        return this;
    }
Nach dem Login kopieren

steht am Ende

Eine weitere Gefahr besteht darin, bei der Verwendung von Annotationen zu prüfen, ob es Überschneidungen zwischen Annotationen gibt, andernfalls wird ein Fehler gemeldet . Es ist falsch, gleichzeitig @WebMvcTest @Configuration zu verwenden. Einzelheiten finden Sie im Quellcode der Anmerkung

Das obige ist der detaillierte Inhalt vonCode, der HTTP-Anfragen simuliert und den Controller aufruft. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage