我正在尝试测试一个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,允许您匹配请求,而不管它们的顺序如何.这为我解决了很多麻烦.