首页 文章

空手道中的响应对象模板

提问于
浏览
1

有没有办法创建响应对象的模板结构,忽略字段的内容?我在这个例子中有兴趣验证所有相关的字段名称是否存在,无论相关数据如何 . 可以在场景大纲中使用的无数据版本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或其他领域的 Value 不感兴趣 . 我想知道ClinicId,MondayOpen等字段是否存在 .

1 回答

  • 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

相关问题