Afirmação profunda sobre a matriz JOSN com contém em Karate
Scenario:
Given def cat =
"""
{
name: 'Billie',
kittens: [
{ id: 23, name: 'Bob', age: 35 },
{ id: 42, name: 'Wild', age: 25 }
]
}
"""
Then match cat.kittens contains [{ id: 42, name: 'Wild' }, { id: 23, name: 'Bob' }]
Como visto no exemplo, não estou preocupado com a 'idade'. Eu entendo que posso usar '#ignore'. Existe alguma outra maneira, se eu tiver muitos desses nós que devo ignorar.
Estou apenas pensando, isso pode funcionar com matrizes JSON como funciona com objetos JSON. afirmando apenas nós especificados.
erro:
assert.feature:24 - path: $.kittens[*], actual: [{"id":23,"name":"Bob","age":35},{"id":42,"name":"Wild","age":25}], expected: {id=42, name=Wild}, reason: actual value does not contain expected
EDITAR:
Tentei algo sugerido em Karate - como verificar se array contém valores? mas isso não me ajudou. Não estou procurando validação de esquema, em vez disso, estou procurando validação funcional em que cada objeto pode ter valores diferentes para chaves.
Abaixo um falha
Scenario:
Given def cat =
"""
{
name: 'Billie',
kittens: [
{ id: 23, name: 'Bob', age: 35 },
{ id: 42, name: 'Wild', age: 25 }
]
}
"""
* def expected = [{ id: 42, name: 'Wild' }, { id: 23, name: 'Bob' }]
Then match cat.kittens contains '#(^expected)'
Este funciona bem, mas não está me ajudando.
Scenario:
Given def cat =
"""
{
name: 'Billie',
kittens: [
{ id: 23, name: 'Bob', age: 35 },
{ id: 42, name: 'Wild', age: 25 }
]
}
"""
* def expected = { id: 42, name: 'Wild' }
Then match cat.kittens contains '#(^expected)'
Atualmente, estou lendo arrays separadamente e afirmando-os com loop.
Respostas
Apenas adicionar a palavra deep
funciona no 0.9.6.RC4
Then match cat.kittens contains deep [{ id: 42, name: 'Wild' }, { id: 23, name: 'Bob' }]
Não entendo por que a resposta vinculada quando fechei sua primeira pergunta não ajudou você. Talvez eu não entenda e outra pessoa possa dar uma resposta melhor.