问题描述
我正在为Karate Netty模拟服务编写功能,并且尝试使用Scenario来匹配请求中的键值对。
例如:
在这样一个具有嵌套对象数组的请求中,我希望在任何Id值均为null时触发此功能:
{
"Array": [
{
"Id": "legitId"
},{
"Id": null
}
],}
场景:pathMatches('path / to / my / endpoint')&& methodis('post')&& request.Array.contains('Id':null)
文档说我可以在场景中使用JS表达式,但是我很难找到nashorn可以解析的东西来做到这一点。我已经尝试过JSON.stringify和indexOf,其中一些在空手道测试中用于匹配的语法仍然没有运气。我还尝试对Array索引使用通配符来表示类似Array [*]。Id == null,但这也不可行。
解决方法
好消息,在Karate 0.9.6中,您可以使用JsonPath和karate.match()
:
Scenario: karate.match("request.Array[*].Id contains null").pass
有关更多详细信息:https://github.com/intuit/karate/issues/1202#issuecomment-653632397
另请参阅此其他答案,以获取有关使用自定义功能的想法。 Background
中定义,以便在需要时更轻松:https://stackoverflow.com/a/59415796/143475