首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试使用Spring5 WebClient的类

测试使用Spring5 WebClient的类
EN

Stack Overflow用户
提问于 2018-05-29 11:30:36
回答 2查看 5.9K关注 0票数 1

我们正在慢慢地将一些项目从使用遗留的RestTemplate类迁移到新的Spring5 WebClient。作为其中的一部分,我们有一些现有的测试类,它们利用Mockito来验证给定的方法是否会使用模板向端点X发出GET/POST/任何东西。

考虑到WebClient的流畅接口,同样的模拟方法并不实际。我花了一些时间使用WireMock,这很好,但不幸的是,似乎有一个bug,有时WireMock测试会溢出或挂起,因此我正在考虑替代方案。

有没有人对框架或技术有其他建议,可以用来验证Spring的WebClient作为SUT执行的一部分是否进行了预期的调用?

EN

回答 2

Stack Overflow用户

发布于 2018-06-20 22:25:19

Spring实际上使用OkHttp MockWebServer来测试WebClient。

Spring's Example Integration Tests

您可以设置有序的模拟响应或将模拟响应映射到请求详细信息。

票数 5
EN

Stack Overflow用户

发布于 2021-08-18 09:45:33

MockWebServer听起来像是一个很酷的方法。一个适用的示例是:

代码语言:javascript
复制
@ExtendWith(MockitoExtension.class)
class serviceImplTest {

    private ServiceImpl serviceImpl;
    public static MockWebServer mockWebServer;

    @BeforeAll
    static void setUp() throws IOException {
        mockWebServer = new MockWebServer();
        mockWebServer.start();
    }
    
    @AfterAll
    static void tearDown() throws IOException {
        mockWebServer.shutdown();
    }

    @BeforeEach
    void init() {
        String baseUrl = String.format("http://localhost:%s", mockWebServer.getPort());
        serviceImpl = new ServiceImpl(WebClient.builder(), baseUrl);
    }

    @Test
    @DisplayName("whatever")
    void methodName() {
        mockWebServer.enqueue(new MockResponse().addHeader("header", "abcde123")); //MockWebServer will respond with the queued stub.
        String header = serviceImpl.fetchHeader();
        assertThat(header).isEqualTo("abcde123");
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50575922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档