WireMock - заглушка для запроса, содержащего атрибут JSON

Я пытаюсь издеваться над одним и тем же URL-адресом запроса (несколько раз) с разными ответами в соответствии с содержимым тела JSON.

Мой запрос JSON создается динамически, поэтому я не могу статически использовать функцию equalToJson в Mock.

У меня такой же JSON вот такой:

{
    // Changes according to the request
    "task": "TEXT_ENTITY_RECOGNITION",
    "category": "TEXT",
    "data": content
}

Как лучше всего использовать wireMockServer заглушки?

Я пробую что-то вроде этого

wireMockServer.stubFor(post(urlEqualTo("/request"))
                        .withRequestBody(containing("TEXT_ENTITY_RECOGNITION"))
                        .withHeader("Content-Type", equalTo("application/json"))
                        .willReturn(aResponse()
                                .withStatus(201)
                                .withHeader("Content-Type", "application/json")
.withBody(mockedJson)));

Я не нашел ничего подобного в документации. Спасибо!


person Rodsnjr    schedule 29.01.2019    source источник
comment
Есть ли что-то, что JSON Path не поддерживает для вас в WireMock?   -  person A. Kootstra    schedule 30.01.2019


Ответы (1)


WireMock предоставляет несколько шаблонов содержимого EqualToPattern, а ContainsPattern - лишь некоторые из них. Попробуйте что-нибудь вроде:

StringValuePattern urlPattern = new EqualToJsonPattern("/request", true, true);
        MappingBuilder mappingBuilder = WireMock.post(new UrlPattern(urlPattern, false));
        StringValuePattern requestBodyPattern = new ContainsPattern("TEXT_ENTITY_RECOGNITION");
        mappingBuilder.withRequestBody(requestBodyPattern).withHeader("Content-Type", new EqualToJsonPattern("application/json", true, true));
        ResponseDefinitionBuilder response = WireMock.aResponse().withBody("Successful Custom Body Response").withStatus(201).withHeader("Content-Type", "application/json");
        mappingBuilder.willReturn(response);
        wireMockServer.stubFor(mappingBuilder);

У меня это хорошо работает.

person RAJESH KUMAR    schedule 08.02.2019