Java 如何在MockClientHttpRequest/Response中使用RestTemplate xml文件
我正在尝试存根从web服务器返回到我的应用程序的响应,以便能够在我的应用程序上执行组件测试。 我有一个RESTTemplateXML,我希望我的requestFactory使用它来创建基于XML的响应。下面是XML的示例Java 如何在MockClientHttpRequest/Response中使用RestTemplate xml文件,java,spring,Java,Spring,我正在尝试存根从web服务器返回到我的应用程序的响应,以便能够在我的应用程序上执行组件测试。 我有一个RESTTemplateXML,我希望我的requestFactory使用它来创建基于XML的响应。下面是XML的示例 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <rates-file xmlns="http://www.example.com/schema/rates-file"> <t
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rates-file xmlns="http://www.example.com/schema/rates-file">
<timestamp>2017-06-30T14:20:21.768+10:00</timestamp>
<daily-rates-updated>true</daily-rates-updated>
<number-of-records>96</number-of-records>
<rate>
<transaction-type>transaction</transaction-type>
<product-code>product</product-code>
<code>code</code>
<description>description</description>
<rate>2.6154</rate>
</rate>
<number-of-records>96</number-of-records>
<rate>
<transaction-type>transaction2</transaction-type>
<product-code>product2</product-code>
<code>code2</code>
<description>description2</description>
<rate>2.6154</rate>
</rate>
...
为此,我使用MockClientHttpRequest和MockClientHttPreponse作为spring测试的一部分。
如何让MockClientHttpRequest使用此XML并生成响应
编辑:为了澄清这是我试图直接指向XML的代码部分:
public RatesFile fetchRatesFile() {
...
try {
...
**ratesFile = restTemplate.postForObject(exampleUrl, variables, RatesFile.class);**
...
}
return ratesFile;
}
我不想重写postForObject方法,而是想编写一个RequestFactory,使用XML响应HttpMethod.POST请求 我不会弄乱RestTemplate,因为在这种情况下我不会测试Prod代码。我要做的是在我的测试中覆盖exampleUrl,然后建立一个响应它的端点。以下是方法:
如果使用SpringBoot,只需使用@SpringBootTest上的properties属性设置exampleUrl=http://localhost:8080/test. 在这种情况下,还要加上@DirtiesContext。否则,在src/test/resources目录中创建application.properties并将该属性放入该目录中。
现在,您可以在测试包中创建@RestController,该测试包的方法映射到/test,或者
使用可以配置为返回固定响应的模拟Web服务器。最受欢迎的两个是和
使用2或3,您可以接收HTTP请求,并可以根据该请求返回任何您想要的响应。您想要生成的响应会根据什么而有所不同?请求XML是静态的。您的响应是什么样子的?XML包含大量静态数据。我不需要更改它们,我只需要将它们发送到应用程序,就像真正的服务器一样。我只需要将它们发送到应用程序-你的意思是发送响应?还是请求?显示要测试的代码。你的问题没有足够的信息让我回答。给你,我想删除代码的以下部分。我还没有使用你的解决方案,但与一些人交谈,这似乎是一个不错的选择。如果其他人采用了该解决方案,请提供更多详细信息。谢谢你的帮助。@SSF我不知道你说的是什么意思,如果有人采用了这个解决方案。我们在代码中一直使用这种技术,而且AFAIK,Spring团队也是如此。这不是火箭科学——你不想改变测试它的代码,所以你模拟了外部依赖。