1

これは、サービスをモックするための私のユーティリティ クラスです。

public class MockService {


    public static void bootUpMockServices() throws IOException {

        String orderServiceSpecification = readFile("mappings/orderServicesSpecifications.json", Charset.defaultCharset());
        String singleOrder = readFile("mappings/singleOrder.json", Charset.defaultCharset());


        WireMock.stubFor(WireMock.get(WireMock.urlEqualTo("/orders"))
                .willReturn(WireMock.aResponse()
                        .withStatus(200)
                        .withBody(orderServiceSpecification)));

        WireMock.stubFor(WireMock.get(WireMock.urlEqualTo("/orders/1"))
                .willReturn(WireMock.aResponse()
                        .withStatus(200)
                        .withBody(singleOrder)));

    }

    public static String readFile(String path, Charset encoding) 
            throws IOException {
        byte[] encoded = Files.readAllBytes(Paths.get(path));
        return new String(encoded, encoding);
    }

}

ご覧のとおり、GET 呼び出し/orders(すべての注文を含む) をモックし、json ファイルに保持されているすべての注文を本文で応答しています。

また、単一の注文を GET call で呼び出しています/orders/1。ファイル内の JSON オブジェクトで応答しています。しかし、私はそれを動的にしたいと考えています。then でヒットしたときのようにorders/30、動的に順序を取得しid=30てレンダリングする必要があります。

4

1 に答える 1

1

現在、説明した種類の動的な動作が必要な場合は、 ResponseDefinitionTransformer を作成し、構築時に WireMockServer または WireMockRule に登録する必要があります。

これはここに文書化されています: http://wiremock.org/docs/extending-wiremock/#transforming-responses

トランスフォーマーの実装例: https://github.com/tomakehurst/wiremock/blob/master/src/test/java/com/github/tomakehurst/wiremock/ResponseDefinitionTransformerAcceptanceTest.java#L208-L222

あなたがやろうとしていることは、URL正規表現のようなスタブマッピングマッチングと/orders/(\d+)、数値部分を解析しbodyFileNameResponseDefinition.

于 2016-11-22T21:12:29.613 に答える