Wiremock Post Request json Значение свойства тела является Dynami c Генерируемое значение, как заглушки - PullRequest
0 голосов
/ 18 апреля 2020

Я новичок в wiremock , использую wiremock в моем тесте интеграции с весенней загрузкой для имитации одного из внешних вызовов http.

В моем теле запроса json содержатся два динамических элемента c свойства, все другие поля могут устанавливать и заглушать в запросе только два значения поля не могут быть установлены, поскольку они являются динамическими c значениями.

Поскольку они являются динамическими c по своей природе, я имею в виду Значение свойства - это случайно-автоматически генерируемые значения. Есть ли способ игнорировать эти свойства, а остальные свойства все равно совпадают.

Я знаю, что игнорирование доступно для дополнительных полей и порядка массива

withRequestBody(equalToJson(requestJson, true, true))

true ignoreArrayOrder

true ignoreExtraField

I Хотите узнать, как описано выше, игнорировать функцию, указывающую свойство c (пользователь может указать имя свойства, чтобы свойство, которое он должен игнорировать) было доступно?

У меня есть следующее json тело запроса, которое мне нужно заглушить в проводном посте, поэтому я использую

запрос Json

{
   "property_one" : "Anand Sweets",
   "property_two" : "Guru Sweets",
   "property_three" : "Kranthi Sweets",
   "property_four" : auto-generated-number,  // dynamic number from code
   "property_five" : null,
   "propertysix" : " "GST128093",
   "property_seven" : auto-generated-number, // dynamic number from code
   "property_eight" : 13890139,
   "property_nine" : 1290.90,
   "property_ten" : "X239GDIJD9090"

}

Stubbing

stubFor(post(urlEqualTo(testUrl))
            .withHeader(CUSTKEY, equalTo(CUST_VALUE))
            .withHeader(TOKENKEY, equalTo(TOKEN_VALUE))
            .withHeader(MATCHKEY, equalTo(MATCH_VALUE))
            .withRequestBody(equalToJson(requestJson, true, true))
            .willReturn(aResponse()
                    .withStatus(200)
                    .withHeader("Content-Type", "application/json")
                    .withBody(responseJson)
            )
    );

ответ Json

{
     "Success": true,
     "message": "request processed successfully",
     "success_code": 9000,
     "external": "AKALDJKAD138948934" 
}

Здесь, в запросе json, у меня есть почти от 60 до 70 свойств, кроме для property_four и property_seven оставшиеся совпадения всех полей происходят правильно.

Я хотел знать, как игнорировать эти два поля с равным Json (запрос Json) в Wiremock, так как они значения полей являются динамическими c по своей природе, я хотел пропустить эти свойства из сопоставления.

У любого есть идея, как пропустить или игнорировать эти свойства, или любое другое хорошее решение этой проблемы.

Я думал об использовании сRequestBody (соответствуя JsonPath (PATH)) , но с огромным и сложным запросом ,

Я чувствовал, что это не правильное решение.

Тело моего запроса настолько сложное, я имею в виду множество полей, например, я упомянул только десять свойств с примерами свойств и значений.

Заранее спасибо, как я уже говорил ранее, я новичок в Wiremock.

1 Ответ

0 голосов
/ 21 апреля 2020

Если вы используете WireMock версии 2.26.3, вы можете использовать заполнители для любого значения JSON в запросе. Для получения дополнительной информации см. запрос на сопоставление документации (вероятно, лучше всего искать "заполнители").

{
    "property_one" : "Anand Sweets",
    "property_two" : "Guru Sweets",
    "property_three" : "Kranthi Sweets",
    "property_four" : "${json-unit.any-number}",  // dynamic number from code
    "property_five" : null,
    "propertysix" : " "GST128093",
    "property_seven" : "${json-unit.any-number}", // dynamic number from code
    "property_eight" : 13890139,
    "property_nine" : 1290.90,
    "property_ten" : "X239GDIJD9090"
}

Для версий WireMock до 2.26.3 соответствие JSON не выполняется. не такой надежный, и я бы определенно рекомендовал обновить.

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