我想在我的整个应用程序上编写集成测试,并且只想模拟一个特定的方法:Install-Package NUnit -Version 3.5.0
我用来将一些数据发送到外部Web服务并接收响应。
我想从本地文件中读取响应(模拟和模仿外部服务器响应,因此它始终是相同的。)
我的本地文件应该只包含外部网络服务器响应的生产中的RestTemplate
响应。
问题:如何模拟外部xml响应?
json/xml
答案 0 :(得分:1)
春天真是太棒了:
@Autowired
private RestTemplate restTemplate;
private MockRestServiceServer mockServer;
@Before
public void createServer() throws Exception {
mockServer = MockRestServiceServer.createServer(restTemplate);
}
@Test
public void test() {
String xml = loadFromFile("productsResponse.xml");
mockServer.expect(MockRestRequestMatchers.anything()).andRespond(MockRestResponseCreators.withSuccess(xml, MediaType.APPLICATION_XML));
}
答案 1 :(得分:0)
你可以为此实现像Mockito这样的模拟框架:
所以,在你的resttemplate模拟中你会有:
when(restTemplate.postForEntity(...))
.thenAnswer(answer(401));
并回答类似的实现:
private Answer answer(int httpStatus) {
return (invocation) -> {
if (httpStatus >= 400) {
throw new RestClientException(...);
}
return <whatever>;
};
}
如需进一步阅读,请按照Mockito
进行操作