空手道中的响应对象模板

时间:2018-07-13 08:14:02

标签: karate

是否有一种方法可以创建响应对象的模板结构,而忽略字段内容?在这种情况下,我有兴趣验证所有相关字段名称是否存在,而不管相关数据如何。 可以在方案大纲中使用的Templates的无数据版本会很棒。

出于好奇,我正在验证API文档。

用于验证以下内容的结构的示例响应:

"Clinics": [
{
  "ClinicId": 1212,
  "MondayOpen": null,
  "MondayClose": null,
  "TuesdayOpen": null,
  "TuesdayClose": null,
  "WednesdayOpen": null,
  "WednesdayClose": null,
  "ThursdayOpen": null,
  "ThursdayClose": null,
  "FridayOpen": null,
  "FridayClose": null,
  "SaturdayOpen": null,
  "SaturdayClose": null,
  "SundayOpen": null,
  "SundayClose": null,
}]

我对ClinicId或其他字段的值不感兴趣。 我想知道字段ClinicId,MondayOpen等是否存在。

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解,但让我尝试。如果您具有JSON,如下所示:

* def json = { foo: 'bar', baz: 'ban' }

您可以如下使用#present标记:

* match json == { foo: '#present', baz: '#present' }

现在,听起来您想动态确定所需的键:

* def keys = ['foo', 'baz']

您可以轻松地以编程方式创建所需的模板:

* def template = {}
* eval karate.forEach(keys, function(k){ template[k] = '#present' })
* match json == template

希望有帮助!请注意,karate.forEach()是0.8.0中的新增功能-您可以同时使用0.8.0.RC9。

如果您参考以下示例,则可能会得到更多建议:https://github.com/intuit/karate/blob/master/karate-demo/src/test/java/demo/search/search-complex.feature#L27