我在春季启动项目的单元测试中使用hoverfly。

的背景

Spring Boot项目将从Spring Cloud配置服务器获取其配置(连接超时等)。
为了测试我的超时配置是否正常工作,我编写了一个单元测试,并期望hoverfly可以长时间延迟返回,然后我自定义的restTemplate可以抛出超时错误,而不是等待。
单元测试看起来像这样:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = TestApplication.class)
@FixMethodOrder(value = MethodSorters.NAME_ASCENDING)
public class CustomRestTemplateTest {

@Autowired
private RestTemplate customRestTemplate;

@ClassRule
public static HoverflyRule hoverflyRule = HoverflyRule.inSimulationMode(SimulationSource.dsl(
            service("www.test.com")
            .get("/")
            .willReturn(success(HttpBodyConverter.json("{}")).withDelay(10, TimeUnit.SECONDS))
    ));

@Test
public void connectionTimeoutTest() {
     customRestTemplate.getForObject("www.test.com", Object.class);
}
}


问题

正如我在The background部分中提到的那样,当我的spring boot项目启动时,它将从spring cloud配置服务器中获取配置,但是Hoverfly捕获了该请求并尝试找到相应的记录,当然不能,因为我只定义了我的单元测试的记录(例如www.test.com),因此会引发错误:

{"destination":"172.16.2.84:8888","error":"No match found","key":"a7ac72c9bcc3dc2b76bf0877d98f9e3a","level":"warning","method":"GET","msg":"Failed to find matching request template from template store","path":"************","query":"","time":"2017-03-08T20:55:28+08:00"}


我该如何解决?我想使用hoverfly,可以设置一些配置并排除配置服务器的url吗?

最佳答案

Hoverfly的开发人员Tommy在他们的email list中回复了我

这是一个已知问题:https://github.com/SpectoLabs/hoverfly-java/issues/19



更新资料

这已由Tommy Situ修复,并将在v0.4.3中发布代码修复。

10-06 14:58