Rod Bailey
Rod Bailey

Reputation: 117

Karate Schema validation, does it work with nested arrays when using match contains assertion?

I'm trying to use a match on a json object by only checking for some elements. The Json object contains a nested array which seem to be the root cause for the test failing. It seems like using the 'match contains' assertion on key:values within the nested array does not work as expected and throws an error.

I've tried to use 'match contains' on first level keys and that works fine but when attempting to match keys within a nested array I get the following error message: reason: actual value has 1 more key(s) than expected

* def json = { id: 1, priority: 1, compRound: { id: 1, comp_id: 89 } }
* match json contains
"""
{
  id: '#number',
  priority: '#number',
  compRound: {
    id: '#number'
  }
}
"""

As I'm using the match contains assertion, I would expect for the test to pass but instead it looks like Karate expects all key:values within the nested array to be present.

Upvotes: 2

Views: 2569

Answers (1)

Peter Thomas
Peter Thomas

Reputation: 58058

Please read this section of the docs carefully: https://github.com/intuit/karate#contains-short-cuts

* def json = { id: 1, priority: 1, compRound: { id: 1, comp_id: 89 } }
* def compRound = { id: '#number' }
* match json == { id: '#number', priority: '#number', compRound: '#(^compRound)' }

Upvotes: 2

Related Questions