Не удалось проверить запросы, сделанные к серверу WireMock: «Нет совпадений с запросами» - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь подтвердить запрос на сервер WireMock, но получаю сообщение об ошибке, в котором говорится, что запросы не совпадают.Единственный бит, который не соответствует, это бит «Content-Type: plain \ text».

Пожалуйста, смотрите ниже мой код:

public class WeatherApplicationTest {


    @Rule
    public  WireMockRule wireMockRule = new WireMockRule(8080);
  //  public   WireMockServer wireMockServer = new WireMockServer(8090); //No-args constructor will start on port 8080, no HTTPS



    @BeforeClass
    public  static void setUpClass() {
        //wireMockServer.start();
    }

    @AfterClass
    public static  void tearDownClass() {
        //wireMockServer.stop();

    }


    @Test
    public void statusMessage() throws IOException{

                wireMockRule.start();


         stubFor(get(urlEqualTo("/user/1"))
        .willReturn(aResponse()
        .withStatus(200)
        .withStatusMessage("Everything is fine")
        .withHeader("Content-Type","text/plain")));

       HttpClient client = new DefaultHttpClient();
       HttpClient client2 = new DefaultHttpClient();

        HttpGet request = new HttpGet("http://localhost:" + wireMockRule.port() + 
        "/user/1");
       HttpResponse response = client.execute(request);

       HttpGet request2 = new HttpGet("http://localhost:" + wireMockRule.port() + 
        "/some/else");
       HttpResponse response2 = client2.execute(request2);

        assertThat(response.getStatusLine().getStatusCode(), is(200));
        assertThat(response2.getStatusLine().getStatusCode(), is(404));


        verify(getRequestedFor(urlEqualTo("/user/1"))
        .withHeader("Content-Type", equalTo("text/plain")));


        wireMockRule.stop();



}
}

Это сообщение об ошибке, которое яполучение:

Нет совпадений запросов.Наиболее похожий запрос был: ожидаемый:

Content-Type: text / plain

, но был:

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Установите заголовок для обоих ваших запросов HttpGet

 request.setHeader(HttpHeaders.CONTENT_TYPE, "text/plain");

, и он должен нормально работать

0 голосов
/ 26 апреля 2018

Проблема в том, что вы пытаетесь проверить, что запрос имеет заголовок Content-Type: text/plain, тогда как вы отправляете его только как заголовок ответа.

Удалите .withHeader("Content-Type", equalTo("text/plain")) и все должно работать.

...