使用MockRestServiceServer模拟REST调用

我正在尝试编写一个JUnit测试用例,用于测试助手类中的方法。该方法使用REST调用外部应用程序,而这正是我试图在JUnit测试中模拟的调用。

helper方法使用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));

当我运行测试时,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

回到顶部