Is it possible to use karate 'match' inside conditional statement?

Find the example here.

def a = condition ? " karate match statement " : "karate match statement"

Is it possible to do something like this??


Solution 1:

This is not recommended practice for tests because tests should be deterministic.

The right thing to do is:

  • craft your request so that the response is 100% predictable. do not worry about code-duplication, this is sometimes necessary for tests
  • ignore the dynamic data if it is not relevant to the Scenario
  • use conditional logic to set "expected value" variables instead of complicating your match logic
  • use self-validation expressions or schema-validation expressions for specific parts of the JSON
  • use the if keyword and call a second feature file - or you can even set the name of the file to call dynamically via a variable
  • in some cases karate.abort() can be used to conditionally skip / exit early

That said, if you really insist on doing this in the same flow, Karate allows you to do a match via JS in 0.9.6.RC4 onwards.

See this thread for details: https://github.com/intuit/karate/issues/1202#issuecomment-653632397

enter image description here

The result of karate.match() will return a JSON in the form { pass: '#boolean', message: '#string' }

If none of the above options work - that means you are doing something really complicated, so write Java interop / code to handle this