使用MockRestServiceServer模拟REST调用
我正在尝试编写一个JUnit测试用例,用于测试助手类中的方法。该方法使用REST调用外部应用程序,而这正是我试图在JUnit测试中模拟的调用。
helper方法使用Spring的RestTemplate进行REST调用。
在测试中,我创建了一个模拟REST服务器和一个模拟REST模板,并按如下所示实例化它们:
@Beforepublic void setUp() throws Exception {
mockServer = MockRestServiceServer.createServer(helperClass.getRestTemplate());
}
然后,我给模拟服务器添加种子,以便当助手方法进行REST调用时它应返回适当的响应:
// response is some XML in a StringmockServer
.expect(MockRestRequestMatchers.requestTo(new URI(myURL)))
.andExpect(MockRestRequestMatchers.method(HttpMethod.GET))
.andRespond(MockRestResponseCreators.withStatus(HttpStatus.OK)
.contentType(MediaType.APPLICATION_XML)
.body(response));
当我运行测试时,helper方法从其进行的REST调用接收到空响应,并且测试失败。
帮助程序创建的REST URL具有查询参数,如下所示:“ http:// server:port / application /
resource?queryparam1 = value1&queryparam2 =
value2
”。
我尝试将URL(“ http:// server:port / application /
resource ”)与查询参数一起使用 ,也可以
不将查询参数放在“ myURL”变量中(以引发匹配,以便它返回响应),但是可以无法让模拟服务器返回任何内容。
我曾尝试搜索此类代码的示例,但尚未找到任何与我的情况相似的东西。
春季版本4.1.7。
在此先感谢您的协助。
回答:
创建实例时,MockRestServiceServer
应使用RestTemplate
生产代码正在使用的现有实例。因此,请尝试注入RestTemplate
测试并在调用时使用它MockRestServiceServer.createServer
-不要RestTemplate
在测试中创建新的。
以上是 使用MockRestServiceServer模拟REST调用 的全部内容, 来源链接: utcz.com/qa/405306.html