【问题标题】:Assert WebFlux ServerResponse using MockServerRequest使用 MockServerRequest 断言 WebFlux ServerResponse
【发布时间】:2021-04-05 17:15:17
【问题描述】:

我想将路由器层与处理程序层分开,所以我不想按照this question 中的建议使用WebTestClient。我不认为将WebTestClient 扔在问题上是正确的解决方案。

就我而言,我使用的是MockServerRequest,它只允许测试http 状态代码和标头。无法断言响应的正文。

val request = MockServerRequest.builder()
            .method(HttpMethod.GET)
            .uri(URI.create("/service"))
            .build()

StepVerifier.create(myHandler.handleGet(request))
            .assertNext { /* and assertThat(it.body()) ...  */  }
            .verifyComplete()

有没有办法断言身体?如果没有,那为什么?还有什么替代方法?

【问题讨论】:

    标签: unit-testing spring-webflux


    【解决方案1】:

    在调试时,我注意到我可以看到主体(实体)。因此,我检查了返回的类及其层次结构。我已经意识到强制转换可以解决问题,而且它确实有效(但我不确定它是否正确)。

    对于有问题的代码:

    val request = MockServerRequest.builder()
                .method(HttpMethod.GET)
                .uri(URI.create("/service"))
                .build()
    
    StepVerifier.create(myHandler.handleGet(request))
                .assertNext { assertThat((it as EntityResponse<Fleet>).entity())
                                  .isNotNull /* add more assertions */ }
                .verifyComplete()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-11
      • 2018-10-11
      • 2018-10-06
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 2019-04-04
      • 1970-01-01
      相关资源
      最近更新 更多