сопоставить ответ при игнорировании порядка массива - PullRequest
1 голос
/ 16 апреля 2019

Учитывая следующий ответ:

* def resp = {"a":[{"c": 2},{"c": 1}, {"c":3}], "b":[6,5,4]}

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

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

  * match resp.a.[*].c contains [3,2,1]
  * match resp.b contains [5,4,6]

Есть ли что-то вроде глобального конфига, чтобы игнорировать порядок массива все вместе, или мне нужно переходить с содержит?

1 Ответ

2 голосов
/ 16 апреля 2019

Следующие работы. Вы также можете указать размер массива, если хотите, например.

    * def response = {"a":[2,1,3], "b":[6,5,4]}
    * match response.a contains [3,2,1]
    * match response.b contains [5,4,6]
    * match response == {"a": "#[] #? _ <4, _ >0", "b": "#[] #? _ <7, _ >3"}

Отредактируйте в соответствии с более подробным регистром:

    * def resp = {"a":[{"c": 2},{"c": 1}, {"c":3}], "b":[6,5,4]}
    * def inside = {"c" : "#number"}
    * def schema = { "a": "#[] #(inside)", "b": "#[] #number" }
    * match resp == schema
...