Wiremock でモックしている別のサービス (B) を呼び出すサービス (A) があります。私がやりたいのは、次のテストを行うことです。
- 録音モードの場合は、通話 A -> B を録音し、ファイルに入れます
- 非記録モードの場合、呼び出し 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
}
問題は、録音を行うと、スタブが機能しないことです。これを達成する簡単な方法はありますか。
ありがとう :)