1

Wiremock でモックしている別のサービス (B) を呼び出すサービス (A) があります。私がやりたいのは、次のテストを行うことです。

  1. 録音モードの場合は、通話 A -> B を録音し、ファイルに入れます
  2. 非記録モードの場合、呼び出し A -> B をキャプチャし、事前に記録されたモックと比較します (回帰テストのようなものです)。

私の現在の構造は BMockRule.java です

public class BMockRule extendsWireMockClassRule {


    public BMockRule(Options options) {
        super(options);
    }

    @Override
    protected void before() {
        super.before();
        this.stub();
    }

    @Override
    public void stub() {

        this.stubFor(requestMatching(request ->
                MatchResult.of(request.getUrl().contains("/request")))
                .willReturn(aResponse().withStatus(200))
        );
    }
}

そして、私のテストの内部は次のようになります

public class QuoteCachePublisherIntTest {
    @ClassRule
    public static DropwizardAppRule<MicroServiceConfiguration> rule =
            new DropwizardAppRule<>(
                    MicroServiceApplication.class,
                    resourceFilePath("test_config.yml"));

    private QuoteCachePublisher publisher;

    @ClassRule
    public static BasicWiremockClassRule serviceB =
            new BMockRule(options().port(5100)).withStatus(200);

    @Test
    public void test_Request() {

        if(record) {
            WireMock.startRecording("http://localhost:5100");
        } 

        publisher.publish(parameters);

        if(record) {
            SnapshotRecordResult recordedMappings = WireMock.stopRecording()
            <write-stubs-to-file>
        } else {
            SnapshotRecordResult recordedMappings = <read-stubs-from-file>
        }

        // verify statements that compare the actual calls vs the recorded mappings
    }

問題は、録音を行うと、スタブが機能しないことです。これを達成する簡単な方法はありますか。

ありがとう :)

4

0 に答える 0