2016-09-27 18 views
0

WireMockRule을 사용하여 원격 호스트에 대한 요청을 모의하려고하고 있습니다. 현재 다음과 같은 로컬 호스트 요청을 조롱하고 있습니다.통합 테스트에서 로컬이 아닌 호스트에 WireMockRule이 작동하지 않습니다.

@Rule 
    public WireMockRule wireMockRule = new WireMockRule(80); 

    ... 

    wireMockRule.stubFor(post(urlPathEqualTo("/api/users")) 
    .willReturn(aResponse() 
    .withStatus(200))); 

그리고 이들이 로컬 호스트에 대해 올바르게 작동합니다. 그러나 유사하게하려고 할 때

@Rule 
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().bindAddress("remote").port(80)); 

그것은 작동하지 않습니다, 이벤트 테스트가 시작되지 않습니다. 그래서 너희들에게 물어보고 싶은데, 내가 뭘 잘못 알고 있는지 누가 알 겠어? 감사합니다

답변

0

WireMockRule 항상 로컬 호스트에서 서버를 시작합니다. 그것은 원격 WireMock 서버에 연결하기위한 것이 아닙니다. 소스에서 이것을 볼 수 있습니다.

WireMock 클라이언트가 원격 서버에 대해 실행되도록 구성하려면 @Rule을 사용하지 마십시오. 테스트 초기에 WireMock.configureFor("my.remote.host", 8000);을 생성자에 넣기 만하면됩니다.

import static com.github.tomakehurst.wiremock.client.WireMock.*; 

... 

stubFor(post(urlPathEqualTo("/api/users")) 
    .willReturn(aResponse() 
     .withStatus(200))); 
+0

하지만 필요 : 일반적으로

, 당신은 @Rule 여부를 사용하는지 여부는 WireMock의 디자이너는 오히려 WireMockRule 객체의 멤버 방법보다는 WireMock 클래스의 정적 메소드를 사용하는 것으로 예상 기존 호스트가 아니라는 요청을 모의하기 위해 (통합 테스트 호스트가 오프라인 일 때) .. 가능한가? –

+0

원격 호스트에서 WireMock 서버를 시작하려면 직접해야합니다. WireMock에서 제공하는 원격 호스트의 서버를 시작할 수있는 방법은 없습니다. – slim