首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹簧引导执行器中断@AutoConfigureMockRestServiceServer

弹簧引导执行器中断@AutoConfigureMockRestServiceServer
EN

Stack Overflow用户
提问于 2021-03-17 15:09:20
回答 1查看 107关注 0票数 1

我有一个类,它使用RestTemplate构建多个RestTemplateBuilder

代码语言:javascript
复制
private RestTemplate build(RestTemplateBuilder restTemplateBuilder) {
    return restTemplateBuilder
      .rootUri("http://localhost:8080/rest")
      .build();
}

对于我的测试设置,我使用@AutoConfigureMockRestServiceServer和使用MockServerRestTemplateCustomizer的模拟响应

代码语言:javascript
复制
mockServerRestTemplateCustomizer.getServer()
  .expect(ExpectedCount.times(2),
        requestToUriTemplate("/some/path/{withParameters}", "withParameters"))
    .andRespond(withSuccess());

当我取消pom中的spring-boot-actuator依赖项注释时,我的测试就通过了,而在另一个场景中,我的测试失败了,并收到了以下消息。

预期:/偏/路径/参数 实际:http://localhost:8080/rest/pos/some/path/withParameters

通过MockServerRestTemplateCustomizer调试,我注意到spring-boot-actuator应用了一个"DelegateHttpClientInterceptor“来支持rest模板的内置度量。但是,这给我在RootUriRequestExpectationManager中找到的以下代码带来了问题

代码语言:javascript
复制
public static RequestExpectationManager forRestTemplate(RestTemplate restTemplate,
        RequestExpectationManager expectationManager) {
    Assert.notNull(restTemplate, "RestTemplate must not be null");
    UriTemplateHandler templateHandler = restTemplate.getUriTemplateHandler();
    if (templateHandler instanceof RootUriTemplateHandler) {
        return new RootUriRequestExpectationManager(((RootUriTemplateHandler) templateHandler).getRootUri(),
                expectationManager);
    }
    return expectationManager;
}

因为如上所述,spring-boot-actuator注册了一个"DelegateHttpClientInterceptor“,这导致上面的代码不识别RootUriTemplateHandler,因此不匹配使用requestToUriTemplate的请求。

我在这里错过了什么才能让它发挥作用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-19 08:15:58

正如安迪·威尔金森所指出的,这似乎是Spring中的一个bug。I 创建一个示例项目的问题

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66675861

复制
相关文章

相似问题

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