Wiremock запись и заглушка одновременно - PullRequest
1 голос
/ 17 февраля 2020

У меня есть служба (A), которая вызывает другую службу (B), над которой я издеваюсь с Wiremock. Что я хочу сделать, так это провести тест, в котором:

  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
    }

Дело в том, что когда я делаю запись, заглушка не работает. Есть ли простой способ сделать это.

Спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...