Как сопоставить JSON в Wiremock, который имеет одинаковые значения для полей, но может быть не в том же порядке - PullRequest
1 голос
/ 10 марта 2019

У меня есть запрос JSON body [ {"name" : "Ram"}, {"name" : "Sam"} ]

и это вход для запроса Wiremock Мне нужно сопоставить запрос, даже если JSON имеет тот же контент, но значения могут быть не в том же порядке. Пример, [ {"name" : "Sam"}, {"name" : "Ram"} ]

Метод, который я использую, .withRequestBody. I tried with equalToJson`, но не работает. Что это за совпадение, которое проверяет только содержимое JSON, а не порядок?

1 Ответ

1 голос
/ 11 марта 2019

Эту проблему можно решить с помощью JsonPath, который является частью bodyPatterns функции сопоставления равенства.

{
  "request" : {
    "urlPathPattern" : "/jpath/.*",
    "method" : "GET",
     "bodyPatterns" : [ {
      "matchesJsonPath" : "$[?(@.name == 'Sam')]"
    } ]   
  },
  "response" : {
    "status" : 200,
    "body" : "Works"
  }
}

Используя онлайн-оценщик JsonPath , его легко протестироватьJsonPath выражения.Для более подробной информации о том, что возможно, посмотрите здесь .

...