Ошибка создания заглушки WireMock: ожидается 201, но получено 200

Я новичок в WireMock и пытаюсь заставить мой первый модульный тест работать с ним. Теперь, следуя документам на wiremock.org, я написал это

    WireMockConfiguration config = wireMockConfig().port(9089).httpsPort(8443);
    m_wireMockServer    =       new WireMockServer(config);

    m_wireMockServer.start();
    WireMock.configureFor("localhost", 9089);
    givenThat(get(urlEqualTo("/some/thing"))
    .willReturn(aResponse()
        .withHeader("Content-Type", "text/plain")
        .withBody("Hello world!")));

Я ожидаю, что это сделает любой HTTP-запрос к /some/thing, который будет пойман. Это дает мне следующее исключение для данного вызова:

com.github.tomakehurst.wiremock.client.VerificationException: Expected status 201 for http://localhost:9089/__admin/mappings/new but was 200
at com.github.tomakehurst.wiremock.client.HttpAdminClient.postJsonAssertOkAndReturnBody(HttpAdminClient.java:151)
at com.github.tomakehurst.wiremock.client.HttpAdminClient.addStubMapping(HttpAdminClient.java:65)
at com.github.tomakehurst.wiremock.client.WireMock.register(WireMock.java:130)
at com.github.tomakehurst.wiremock.client.WireMock.register(WireMock.java:126)
at com.github.tomakehurst.wiremock.client.WireMock.givenThat(WireMock.java:65)

Что я упустил? Что не так в создании заглушки?


person Jos    schedule 28.04.2015    source источник
comment
Давайте начнем с разницы в URL здесь. URL-адрес, который у вас есть в вызове метода get, отличается от URL-адреса, который не прошел утверждение.   -  person Makoto    schedule 28.04.2015
comment
Да, тест, в котором я хочу использовать издевательское поведение /some/thing, здесь даже не запускается. Я хочу, чтобы запросы к /some/thing вели себя так, как определено для моего теста. Но исключение происходит с регистрацией этого поведения. Регистрация возвращает 200, а нужно 201, как я понял.   -  person Jos    schedule 28.04.2015


Ответы (1)


Я предполагаю, что у вас есть Wiremock, работающий в фоновом режиме все время между тестовыми запусками, поэтому, когда вы настраиваете новое сопоставление в тесте, сопоставление на самом деле не новое, поскольку оно уже существует, и Wiremock отвечает 200 (ОК ) вместо 201 (создано).

Чтобы проверить эту гипотезу, попробуйте найти процесс на порту, назначенном Wiremock, если он есть, уничтожьте его и снова запустите тест.

person fahrenx    schedule 10.11.2015
comment
В связи с этим я столкнулся с той же проблемой, что и автор вопроса, и обнаружил, что на самом деле у меня была служба, работающая локально на том же порту, который я назначил WireMock. Закрытие этого локально работающего приложения решило проблему для меня. - person Tom Catullo; 15.08.2017