如何在Java中的同一测试中使用多个端点模拟REST服务器?

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

上一篇:使用mockito模拟合格的bean用于spring-boot应用程序


下一篇:spring – 增加JdbcTemplate模拟的代码覆盖率