我在春季启动项目的单元测试中使用了hoverfly。
spring boot项目将从spring cloud配置服务器获取其配置(连接超时等)。 为了测试我的超时配置是否有效,我编写了一个单元测试,并期望hoverfly可以长时间返回,然后我的自定义restTemplate会抛出超时错误而不是等待。 单元测试看起来像lilke:
@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 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吗?
答案 0 :(得分:0)
Hoverfly的开发人员Tommy在email list
中回复了我这是一个众所周知的问题:https://github.com/SpectoLabs/hoverfly-java/issues/19
这已由Tommy Situ修复,代码修复将在 v0.4.3
中发布