В весеннем тесте как смоделировать только один указанный c вызов с MockRestServiceServer? - PullRequest
0 голосов
/ 27 апреля 2020

В тесте Spring Boot Application я пытаюсь смоделировать вызов с restTemplate и MockRestServiceServer, которые пытаются подключиться к внешнему API и получить повар ie для проверки подлинности. Вот так:

mockServer.expect(requestTo("http://localhost:" + port + "/externalWebapp/authenticate"))
  .andRespond(withSuccess("resultSuccess", MediaType.TEXT_PLAIN));

Но проблема в том, что я непосредственно тестирую веб-слой моего приложения, используя restTemplate вот так (вторая часть без макета MVC):

https://spring.io/guides/gs/testing-web/

Когда я выполняю свой тест, я хочу иметь такой поток:

myTest -> restTemplate вызов myWebApp по URL как http://localhost: randomPort / myEndPointToTest / -> внутренний вызов с restTemplate макетированного URL http://localhost: aport / externalWebapp / authenticate /

однако, когда я Запустите тест и попытайтесь смоделировать последний вызов, я получаю сообщение об ошибке:

java.lang.AssertionError: Request URI expected:<http://localhost:aport/externalWebapp/authenticate/> but was:<http://localhost:randomPort/myEndPointToTest/>
    at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:55)
    at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:82)
    at org.springframework.test.web.client.match.MockRestRequestMatchers.lambda$requestTo$3(MockRestRequestMatchers.java:87)

Кажется, что MockRestServiceServer, попробуйте смоделировать ранее вызов любого API, включая тот, который я вызываю для тестирования ... Любой способ заставить MockRestServiceServer не выдавать ошибку или не соответствовать всем вызовам API?

Вот схема, чтобы помочь:

схема

1 Ответ

0 голосов
/ 27 апреля 2020

Если значение URI не важно, то мы можем использовать сопоставители Mockito.

mockServer.expect(Mockito.any(URI.class))
            .andRespond(withSuccess("resultSuccess", MediaType.TEXT_PLAIN));

Это вернет тот же самый успешный ответ для любого переданного URI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...