7

HTTP サーバーへの基になる GET 呼び出しを含むコードをテストしようとしています。

私はWireMockを使用しようとしています、および「はじめに」に基づいて、次のコードがあります:

@Rule
public WireMockRule wireMockRule = 
    new WireMockRule(WireMockConfiguration.wireMockConfig().port(8888)); // No-args constructor defaults to port 8080

@BeforeClass
public static void beforeClass(){
    stubFor(get(urlEqualTo("/Path/Get"))
            .willReturn(aResponse()
                    .withStatus(200)
                    .withBody("[1]")));
}

@Test
public void testGetRanking() throws Exception {
    Fetcher fetcher = new Fetcher("http://localhost:8888",null);
    int rankinganking = fetcher.getRanking("Max");
    Assert.assertEquals(1, ranking);
}

テストを実行すると、次のスタック トレースが表示されます。

wiremock.org.apache.http.conn.HttpHostConnectException: Connect to localhost:8080 [localhost/127.0.0.1] failed: Connection refused
at wiremock.org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)
at wiremock.org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
at wiremock.org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
at wiremock.org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
...

エラーはポート 8080 に関するものですが、ポートを 8888 に構成しました。デフォルトでは WireMock はポート 8080 で始まることがわかっているため、これは内部構成の問題である可能性があります。

ここでの問題は何ですか?

4

1 に答える 1

4

ここでの問題は、@BeforeClassが前に実行されること@ruleです。スタブを@Beforeメソッドに移動するか、テストに直接移動すると、問題が解決します。

于 2015-12-20T08:35:55.897 に答える