什么是REST保证库中的asyncDispatch()替代方案

时间:2017-10-12 08:58:05

标签: mocking spring-test rest-assured spring-boot-test spring-test-mvc

我想使用REST-assured来测试我的REST API,而不是Spring的MockMvc。

我的想法是希望使用REST保证的库从异步调用的响应中获取状态代码。

请查看以下详细信息:

我使用这些依赖项:

'io.rest-assured:rest-assured:3.0.5'
'io.rest-assured:spring-mock-mvc:3.0.5'

当我这样做时:

mockMvc.perform(asyncDispatch(result)).andExpect(status().isAccepted());

我能够在下面获得此状态代码(.andDo(print())的输出),但我希望使用REST保证获得相同的结果:

Async:
    Async started = true
     Async result = <202 Accepted,{}>

有了REST保证,我只能在下面获得此状态代码:

MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = {}
     Content type = null
             Body = 
    Forwarded URL = null
   Redirected URL = null
          Cookies = []

我试过这种方式:

given()
      .accept(MediaType.APPLICATION_JSON_UTF8_VALUE)
      .contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
      .body(new ObjectMapper().writeValueAsString(myDto))

      .when()
      .put(URL)

      .then()
      .apply(print())
      .expect(request().asyncStarted())
      .expect(request().asyncResult(notNullValue()))
      .expect(status().isAccepted());

测试失败:

java.lang.AssertionError: Status 
Expected :202
Actual   :200

提前致谢

1 个答案:

答案 0 :(得分:0)

当您使用RestAssured MockMvc时,您可以使用async

given()
      ...    
      .when()
      .async().put(URL)

      .then()
      ...

请参阅文档here