【发布时间】:2018-05-27 08:44:31
【问题描述】:
我有一个编排器 Spring Boot 服务,它向外部服务发出多个异步休息请求,我想模拟这些服务的响应。
我的代码是:
mockServer.expect(requestTo("http://localhost/retrieveBook/book1"))
.andExpect(method(HttpMethod.GET))
.andRespond(MockRestResponseCreators.withStatus(HttpStatus.OK)
.body("{\"book\":{\"title\":\"xxx\",\"year\":\"2000\"}}")
.contentType(MediaType.APPLICATION_JSON));
mockServer.expect(requestTo("http://localhost/retrieveFilm/film1"))
.andExpect(method(HttpMethod.GET))
.andRespond(MockRestResponseCreators.withStatus(HttpStatus.OK)
.body("{\"film\":{\"title\":\"yyy\",\"year\":\"1900\"}}")
.contentType(MediaType.APPLICATION_JSON));
service.retrieveBookAndFilm(book1,film1);
mockServer.verify();
retrieveBookAndFilm 服务异步调用两个方法,一个是检索书,另一个是检索电影,问题是有时首先执行电影服务,我得到一个错误:
java.util.concurrent.ExecutionException: java.lang.AssertionError: Request URI expected:http://localhost/retrieveBook/book1 but was:http://localhost/retrieveFilm/film1
知道如何解决这个问题,有没有类似于 mockito 的东西来说明这个 url 何时执行然后返回这个或那个?
谢谢 问候
【问题讨论】:
标签: spring-boot junit mockserver