【问题标题】:What is asyncDispatch() alternative in REST-assured libraryREST 保证库中的 asyncDispatch() 替代方案是什么
【发布时间】:2018-03-24 03:26:49
【问题描述】:

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

我的想法是我想使用 REST-assured 库从异步调用的响应中获取状态代码。

查看下方了解详情:

我使用这些依赖项:

'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-assured 获得相同的结果:

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

有了 REST-assured 我只能在下面得到这个状态码:

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

提前致谢

【问题讨论】:

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


    【解决方案1】:

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

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

    请参阅文档here

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 2021-11-13
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多