我有一个Orchestrator Spring Boot服务,该服务对外部服务发出几个异步Rest请求,我想模拟那些服务的响应。
我的代码是:
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();
resolveBookAndFilm服务调用两种异步方法,一种方法是检索书本,另一种方法是检索电影,问题在于有时会先执行电影服务,但会出现错误:
任何想法我该如何解决这个问题,执行此url并返回this或that时,是否有类似于Mockito的说法?
谢谢
问候
最佳答案
我遇到了同样的问题,发现它是由两件事引起的
MockRestServiceServer.bindTo(restTemplate).ignoreExpectOrder(true).build()
mockServer.expect(ExpectedCount.manyTimes(), MockRestRequestMatchers.requestTo(myUrl)) .andExpect(MockRestRequestMatchers.method(HttpMethod.GET)) .andRespond(createResponse())
我通过结合其他两个答案找到了解决方案,这可能会提供更多信息。
How to use MockRestServiceServer with multiple URLs?
Spring MockRestServiceServer handling multiple requests to the same URI (auto-discovery)