Вы определенно что-то упускаете. Попробуйте это в новом сценарии и посмотрите, как это работает. Ниже приведено жесткое кодирование response
, что в точности соответствует тому, что происходит во время выполнения, и, кстати, это отличный способ проверить утверждения в отношении различных типов JSON (без каких-либо HTTP-вызовов):
* def response = {}
Then match $.orgId == '#present'
Then match $.orgId == '#notnull'
И это дает сбой, как вы ожидаете:
assertion failed: path: $.orgId, actual: null, expected: '#present', reason: actual json-path does not exist
Так что, если вы все еще застряли, выполните этот процесс, пожалуйста: https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue
РЕДАКТИРОВАТЬ: если ваш ответ является пустой строкой, но вы ожидали JSON, просто сделайте это, и он не пройдет тест, см. Преобразование типа: https://github.com/intuit/karate#type-conversion
* json response = response
Но, как упоминалось в документации, вы всегда должны пытаться сопоставить «полный JSON», поэтому это должно работать:
* def response = ''
Then match $ contains { orgId: '#notnull' }
РЕДАКТИРОВАТЬ: это будет исправлено в 0.9.4 https://github.com/intuit/karate/issues/814