ApplicationReadyEvent
에서 발생한 HTTP 호출을 차단하기 위해 Wiremock을 사용하려고합니다. 문제는이 호출이 Wiremock 규칙이 적용되기 전에 이루어 졌다는 것입니다. 따라서이 API는 조롱받지 않습니다.ApplicationReadyEvent에서 트리거 된 HTTP 호출을 모의하는 방법
는 스터 빙 실제로 서블릿 컨테이너가 준비되면 트리거 @Before
단계로 구성되어
예를
public class OnApplicationReadyListener implements ApplicationListener<ApplicationReadyEvent>{
@Override
public void onApplicationEvent(ApplicationReadyEvent event) {
// in this pathe is being send a request
consulHealthCheckService.register();
}
} 다음을 참조하십시오. 그래서 실제로 - 는 HTTP 호출이
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = ConsulApplication.class)
public class ConsulApplicationTest {
@Rule
public WireMockRule wireMockRule = new WireMockRule(Agent.DEFAULT_PORT);
@Before
public void setup(){
// is being executed after the http call was fired
stubFor(get(anyUrl()).willReturn(aResponse().withStatus(HttpStatus.OK.value())));
stubFor(put(urlEqualTo("/agent/service/register"))
.willReturn(aResponse()
.withStatus(HttpStatus.OK.value())
.withHeader("Content-Type", APPLICATION_JSON_VALUE)
));
}
@Test
public void shouldRegisterServiceOnApplicationStartup(){
verify(putRequestedFor(urlEqualTo("/agent/service/register")));
}
}
주어진 HTTP 호출을 스텁하는 방법을 어떤 방법이 있나요 해고 후? 참고 : 실제로 전화를 트리거하는 서비스 코드를 조롱 할 수 없습니다.