Как использовать MockRestServiceServer с несколькими URL-адресами?

Мне нужно настроить несколько ожиданий на экземпляре MockRestServiceServer. Ожидания для двух разных URL:

  1. URL звонка №1
  2. URL звонка №1 (во второй раз)
  3. URL звонка № 2

Один и тот же URL-адрес вызывается дважды, затем выполняется третий вызов одного и того же URL-адреса с разными параметрами запроса.

У меня есть один экземпляр RestTemplate с балансировкой нагрузки, доступный для вставки в мой тест, и я передаю его в MockRestServiceServer.createServer().

Я попытался вставить эти 3 ожидания в мой экземпляр MockRestServiceServer, но тест не удался, утверждая, что третий URL-адрес был ожидаемым, но он увидел первый. Похоже, что я либо перезаписываю ожидания, либо здесь делится что-то с состоянием, которое держит фиктивный сервер в неправильном состоянии.

Может кто-нибудь показать мне пример того, как это сделать правильно?

2 ответа

Если кто-то не может понять @alex.b, ответьте

      // Create a mock server with UnorderedRequestExpectationManager
MockRestServiceServer mockServer = MockRestServiceServer.bindTo(restTemplate).build(new UnorderedRequestExpectationManager());

// Add multiple rest url
mockServer.expect(ExpectedCount.once(),
                    requestTo(URL1))
            .andExpect(method(HttpMethod.GET))
            .andRespond(withStatus(HttpStatus.OK)
                    .contentType(MediaType.APPLICATION_JSON)
                    .body(result1));
mockServer.expect(ExpectedCount.once(),
                    requestTo(URL2))
            .andExpect(method(HttpMethod.GET))
            .andRespond(withStatus(HttpStatus.OK)
                    .contentType(MediaType.APPLICATION_JSON)
                    .body(result2));
// Add as much as you want

Ваша проблема может быть решена, если вы используете не менеджер по умолчанию ожидания в Mock Server org.springframework.test.web.client.MockRestServiceServer#MockRestServiceServer: он принимает параметр org.springframework.test.web.client.RequestExpectationManager,

Вы можете передать этот тип: org.springframework.test.web.client.UnorderedRequestExpectationManager

Другие вопросы по тегам