У меня есть служба (A), которая вызывает другую службу (B), над которой я издеваюсь с Wiremock. Что я хочу сделать, так это провести тест, в котором:
- Если я в режиме записи, запишите вызовы 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
}
Дело в том, что когда я делаю запись, заглушка не работает. Есть ли простой способ сделать это.
Спасибо:)