В тесте 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?
Вот схема, чтобы помочь:
схема