Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在MockClientHttpRequest/Response中使用RestTemplate xml文件_Java_Spring - Fatal编程技术网

Java 如何在MockClientHttpRequest/Response中使用RestTemplate 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

我正在尝试存根从web服务器返回到我的应用程序的响应,以便能够在我的应用程序上执行组件测试。 我有一个RESTTemplateXML,我希望我的requestFactory使用它来创建基于XML的响应。下面是XML的示例

<?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团队也是如此。这不是火箭科学——你不想改变测试它的代码,所以你模拟了外部依赖。