2 votes

réponse à la correspondance en ignorant l'ordre du tableau

La réponse suivante est donnée :

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

Je veux que ça corresponde quel que soit l'ordre des tableaux.

Je sais que je pourrais le faire avec contains mais je pense que cela m'obligerait à faire des modèles de correspondance multiples comme :

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

Existe-t-il une configuration globale permettant d'ignorer l'ordre des tableaux ou dois-je me contenter des contenus ?

3voto

Adrien Points 1030

Les travaux suivants. Vous pouvez également spécifier la taille du tableau si vous le souhaitez, par exemple.

    * 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"}

Modifier pour correspondre à votre cas plus détaillé :

    * 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X