我发现某些集成测试失败的原因是使用了一个自定义的RestTemplate错误处理程序,该处理程序实现ResponseErrorHandler并在构造函数中进行了这样的设置:
restTemplate = restTemplateBuilder.errorHandler(errorHandler).build
restTemplateBuilder和errorHandler都自动连接到构造函数中。
运行集成测试时,我得到
I/O error on POST request for \"http://localhost..." ... Connection refused
。现在,如果我不是使用restTemplateBuilder而是自动连接restTemplate,则测试可以正常工作。
在测试中,使用默认的自动连接RestTemplate创建MockRestServiceServer:
mockServer = MockRestServer.createServer(restTemplate)
我尝试使用与测试代码中相同的restTemplateBuilder为模拟服务器构建RestTemplate,但是测试仍然会产生“连接被拒绝”。
集成测试按以下方式运行:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {Main.class})
@AutoConfigureMockMvc
有没有一种方法可以使用自定义响应错误处理程序并将其用于集成测试?