java—是否有现成的类来捕获mockrestserviceserver中的请求体以进行日志记录等?

j91ykkif  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(295)

我会自己回答我的问题,但我对我的解决方案不满意,所以如果有现成的便利类/方法也这么做,请告诉我。

问题陈述

我在单元测试中使用springmockrestserviceserver来模拟rest服务调用。我想快速访问mock rest服务器的请求主体。通常用于日志记录或仅用于调试期间的评估。
使用上下文如下:

import org.springframework.test.web.client.MockRestServiceServer;

class MyTest {
    @Test
    void myTest() {
        MockRestServiceServer mockServer = ...;
        mockServer
            .expect(MockRestRequestMatchers.method(HttpMethod.POST))
            .andExpect(MockRestRequestMatchers.requestTo("http://mock.example.com/myservice"))

            // The following method does not exist, it's what I'd like to have
            .andCapture(body -> { 
                /* do something with the body */ 
                log.info(body);
            }) // the place for the Captor

            .andRespond(MockRestResponseCreators.withSuccess("The mock response", MediaType.TEXT_PLAIN))
        ;
    }
}

问题

是否有一个现成的类/方法可以提供这个“ andCapture(body -> {}) “开箱即用的功能?

kzipqqlq

kzipqqlq1#

到目前为止,我找到的最佳解决方案是:

.andExpect(request -> {
    final String body = ((ByteArrayOutputStream) request.getBody()).toString(StandardCharsets.UTF_8);
    /* do something with the body */
    log.info(body);
})

但是,我认为可能存在一种直接捕获请求主体的方便方法。

相关问题