在 Karate 中,我尝试使用标记和自引用变量的组合来验证 json 响应,如本文所建议。但空检查未按预期工作。
尝试验证 - 'name' 键是字符串,可选,如果存在则不应为空
请参阅下面的代码片段:
* def aTest =
"""
{
name: null,
type: "House",
}
"""
* def eTest =
"""
{
name: '##string? _ !==null',
type: '##string',
street: '##string'
}
"""
* match aTest == eTest
当我运行测试时,我预计“name”键的测试会失败。但测试通过了。不知道我做错了什么。有人能指导我吗?
我认为该示例是针对 的
#array
。我试过了#present
,它成功了。这可能是 Karate 中的一个小错误。编辑 - 阅读评论后,我发现这是一个非常有趣的案例,让我困惑不已。我认为没有办法一步完成此操作,并且我对这有多重要有一个疑问。我猜这以前从未出现过,因为如果值为空,大多数系统都会忽略该字段并将其视为不存在,如下所述:https: //github.com/karatelabs/karate#null-and-notpresent
无论如何,这是一个解决方案,可能还有其他解决方案。有一种极端情况,如果值为,它将失败
''
,但我将其留作练习 :)