空手道-使用仅包含JSON的模式来验证布尔值

时间:2019-12-11 16:54:26

标签: json karate assertion

每当我尝试验证模式或使用模糊匹配从JSON对象中的响应验证布尔字段时,尽管输入了错误的数据,它似乎总是会通过。

为了查询起见,让我们集中精力使用内联模糊匹配,以将模式存储在单独的文件中。

功能文件:

* match response.flags contains any {unitedKingdom: '##boolean'}

响应:

    "flags": {
      "unitedKingdom": true,
      "spain": false,
      "india": true,
      "japan": true
    }
}

我声明的目的是声明每个值以任何顺序返回正确的值类型。如果由于某种原因未返回该值,或者该值比架构中定义的值多,则我希望测试失败。我该如何实现?

我假设使用contains any。但是,当我尝试匹配响应中未返回的随机值时,会收到一条成功消息。请参见下面。

* match response.flags contains any {test: '##boolean'}-测试通过。我希望这会失败。请帮助我了解为什么这会过去,以及我可以做些什么来达成我的主张 上述目的。

我正在使用0.9.5.RC5。

1 个答案:

答案 0 :(得分:1)

请勿使用可选标记:

* def foo = { b: true }
* match foo contains { a: '#boolean' }

您正在执行此操作,即使它不存在也会通过:

* match foo contains { a: '##boolean' }