【发布时间】:2016-10-13 09:55:16
【问题描述】:
我正在尝试编写一个 JUnit 测试用例来测试辅助类中的方法。该方法使用 REST 调用外部应用程序,我试图在 JUnit 测试中模拟这个调用。
辅助方法使用 Spring 的 RestTemplate 进行 REST 调用。
在我的测试中,我创建了一个模拟 REST 服务器和模拟 REST 模板并像这样实例化它们:
@Before
public void setUp() throws Exception {
mockServer = MockRestServiceServer.createServer(helperClass.getRestTemplate());
}
然后我为模拟服务器播种,以便它在辅助方法进行 REST 调用时返回适当的响应:
// response is some XML in a String
mockServer
.expect(MockRestRequestMatchers.requestTo(new URI(myURL)))
.andExpect(MockRestRequestMatchers.method(HttpMethod.GET))
.andRespond(MockRestResponseCreators.withStatus(HttpStatus.OK)
.contentType(MediaType.APPLICATION_XML)
.body(response));
当我运行测试时,辅助方法从它发出的 REST 调用中接收到空响应,并且测试失败。
帮助程序创建的 REST URL 具有查询参数,如下所示:“http://server:port/application/resource?queryparam1=value1&queryparam2=value2”。
我尝试将带有 和 的 URL ("http://server:port/application/resource") 都放在 "myURL" 变量中而不带查询参数(以引发匹配,以便它返回响应),但无法让模拟服务器返回任何内容。
我已尝试搜索此类代码的示例,但尚未找到与我的场景相似的任何内容。
春季版 4.1.7。
提前感谢您的帮助。
【问题讨论】:
-
感谢您将类写入静态方法,这与许多其他来源不同,例如
requestTo.