Malheureusement, ce n'est pas possible en utilisant JSONPath match assert
(au moins avec les versions existantes, peut-être à l'avenir ...). Pour cela, le résultat escompté n'est autorisé que pour les chaînes (ou développer une expression qui sera évaluée en chaînes), il n'est donc pas possible de définir les valeurs attendues en utilisant l'opérateur OR
comme vous le souhaitez.
Une autre façon de le faire pourrait être de mettre l'opérateur OR
dans l'expression jsonpath et d'utiliser true
comme résultat attendu.
Par exemple, pour votre cas, vous pouvez utiliser quelque chose comme:
$.header.[?(@.['rspMsg'] == 'Factura no encontrada en el lote.' || ?(@.['rspMsg'] == 'Invoice not found in open batch.']
Et le résultat attendu utiliser true
.
Cependant, il existe déjà un autre problème, SOAPUI 5.2.1 utilise com.jayway.jsonpath
version 0.9.1 et cette version ne prend pas en charge l'opérateur ||
, donc cela ne fonctionne pas.
La dernière tentative pourrait donc être d'utiliser JSONPath Regex match assert
qui évalue l'expression JSONPath par rapport à une expression rationnelle fournie et attend vrai ou faux. En utilisant cette approche, vous pouvez utiliser:
expression JSONPath:$.header.rspMsg
Expression régulière:(Factura no encontrada en el lote\.)|(Invoice not found in open batch\.)
Résultat attendu:true
À ce stade, je pense que la meilleure approche est la vôtre en utilisant jsonSlurper
pour effectuer l'assertion.
Hope this helps,
Merci pour cette réponse complète, je pensais utiliser RegEx mais n'a pas pu comprendre le modèle, de toute façon je pense que l'aide JsonSlurper est bien meilleure approche ici. – QB1979
@ QB1979 regex est la meilleure approche que j'ai trouvé pour répondre à vos demandes ... mais bien sûr votre première approche est bien meilleure ':)'. – albciff