我正在尝试测试一种Java方法,该方法向远程REST服务器发出请求以检索一些JSON数据,从该JSON中提取一个ID,然后使用该ID向位于不同端点的同一服务器发出另一个请求。
使用Mockito的MockRestServiceServer,我可以成功地模拟和测试期望对一个端点发出单个请求的服务器,但是似乎无法使用它来创建具有一组具有自己的期望和响应的预定义端点的服务器。
如何测试具有多个端点的服务器,以测试单个功能,该功能向远程服务器发出多个不同的请求?
最佳答案
所以我实际上能够解决我的问题。诀窍是手动创建自己的MockRestServiceServerBuilder来构建MockRestServiceServer,而不是使用createServer(RestTemplate)或bindTo(RestTemplate).build()方法,如下所示:
MockRestServiceServer.MockRestServiceServerBuilder builder =
MockRestServiceServer.bindTo(restTemplate);
builder.ignoreExpectOrder(true);
MockRestServiceServer server = builder.build();
这样,MockRestServiceServer中的基础RequestExpectationManager字段将初始化为UnorderedRequestExpectationManager,从而使您可以匹配请求,而不考虑它们的生成顺序。这为我解决了很多麻烦。