MockMvc wybór servera

0

Cześć,

Chcę przeprowadzić testy integracyjne na zamockowanym przeze mnie serverze jetty, dodałem odpowiednie zależności, stworzyłem klasę MockHttpServer, i w teście w @BeforeClass
uruchomiłem server na porcie 8020 - widze w logach że wstał więc ok.
Clientem chcę żeby był MockMvc, no i tu jest problem, robie w teście strzał mvc.perform(get("http://localhost:8020/blabla"), ale problem w tym, że wydaje mi się że strzał nie idzie do mojego servera jettiego, bo zamockowałem sobie jaki ma być response z tego servera,a dostaje coś innego. Co więcej mogę zmienić port na jaki kolwiek np 9999 i też działa, czyli domyślam się że strzał idzie do jakiegoś servera startowego testu.
Jak ustawić żeby ten MockMvc strzelał do mojego servera jetty?
W ten sposób mockuje sobie MockMvc:

@RunWith(SpringRunner.class)
@Category(UnitTests.class)
@SpringBootTest
@AutoConfigureMockMvc
public class customTest{

	@Autowired
	private MockMvc mvc;

1
  1. Nie używaj mockmvc
  2. Nie bardzo rozumiem co ty chcesz teraz przetestować.

Normalnie robisz tak:

  1. Startujesz swój embedded server
  2. Ustawiasz w aplikacji properties tak żeby uważały że ten lewy server to jakiś zewnętrzny serwis z którego korzysta twoja aplikacja
  3. Startujesz aplikacje i voila, teraz będzie ona stukać w tenże serwer myśląc że to jakiś zewnętrzny serwis
1

MockMvc stawia Twoje kontrolery (i kontekst webowy) bez uruchamiania serwera. Odpal normalnie testy na randomowym porcie i strzelaj z TestRestTemplate.

0

Mam wytyczne żeby skorzystać z MockMvc zamiast restTemplate, czyli nie ma możliwości zrobienia tego przy użyciu MockMvc?

0

Ustalmy jedną rzecz - chcesz napisać testy integracyjne swoich endpointów, czy klienta HTTP (np. odpytujesz jakiś inny serwis o dane i jego endpointu chcesz mockować)?

2

Chcę napisać testy integracyjne swoich endpointów, stawiam do testów server jettiego żeby 'udawał' inny serwis z którym moje endpointy się komunikują czyli chcę testować mój endpoint gdzie zamockuje że strzał do tego innego serwisu mi zwróci X.

Czyli testujesz integrację Twój serwis --> inny serwis B. Zauważ, że masz do czynienia z dwiema aplikacjami.

W takim wypadku możesz użyć MockMvc, aby podnieść swoją aplikację, natomiast musisz w testach integracyjnych podmienić adres serwisu B na http://localhost:8082 w konfiguracji klienta HTTP (np. RestTemplate czy cokolwiek używasz). Swoje endpointy szturchasz normalnie bez podania hosta, tj. mvc.perform(get("/blabla"), gdzie /blabla to Twój endpoint, np. @GetMapping("/blabla"). Parametryzację klienta HTTP najlepiej ograć profilem Springowym - w testach podmieniasz adres aplikacji B.

1 użytkowników online, w tym zalogowanych: 0, gości: 1