>  기사  >  Java  >  HTTP 요청을 시뮬레이션하고 컨트롤러를 호출하는 코드

HTTP 요청을 시뮬레이션하고 컨트롤러를 호출하는 코드

不言
不言앞으로
2019-03-14 11:04:333262검색

이 글은 컨트롤러를 호출하기 위한 HTTP 요청 시뮬레이션에 대한 코드를 제공합니다. 여기에는 특정 참조 값이 있습니다. 도움이 필요한 친구가 도움이 되기를 바랍니다.

앞서 작성

MockMvc는 Http 요청 시뮬레이션을 구현하고, 네트워크 형태를 직접 사용하고 Controller 호출로 변환할 수 있어 테스트 속도가 빠르고 네트워크 환경에 의존하지 않습니다. 그리고 일련의 검증 도구를 제공합니다.

단일 테스트 코드는 다음과 같습니다.

@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은 컨트롤러 비즈니스 로직을 호출하는 데 사용됩니다. 자세한 내용은 Junit+MockMvc+Mockito를 사용하는 방법을 참조하세요. 단위 테스트 Http 요청

매개변수 매개변수 소개

매개변수를 통해 http 요청 매개변수를 추가하세요. 형식은 K-V입니다. 매개변수 하나를 추가하거나 매개변수를 통해 MultiValueMap을 추가하세요. parma의 소스 코드 일부는 다음과 같습니다.

/**
     * 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;
    }

Written at the back

또 다른 함정은 Annotation을 사용할 때 Annotation 사이에 겹치는 부분이 있는지 확인하세요. 그렇지 않으면 오류가 보고됩니다. @WebMvcTest @Configuration을 동시에 사용하는 것은 잘못되었습니다. 자세한 내용은 주석 소스 코드를 확인하세요

위 내용은 HTTP 요청을 시뮬레이션하고 컨트롤러를 호출하는 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제