当前位置: 首页 > 知识库问答 >
问题:

空手道模式验证,在使用match contains断言时,它与嵌套数组一起工作吗?

颜瀚漠
2023-03-14

我尝试在json对象上使用匹配,只检查一些元素。Json对象包含一个嵌套数组,这似乎是测试失败的根本原因。在嵌套数组中的key:values上使用“match contains”断言似乎不会像预期的那样工作,并引发错误。

我尝试在第一级键上使用“match contains”,这很好,但是当尝试匹配嵌套数组中的键时,我得到以下错误消息:原因:实际值比预期的多了1个键

* def json = { id: 1, priority: 1, compRound: { id: 1, comp_id: 89 } }
* match json contains
"""
{
  id: '#number',
  priority: '#number',
  compRound: {
    id: '#number'
  }
}
"""

当我使用match contains断言时,我希望测试能够通过,但看起来像Karate希望嵌套数组中的所有key:值都存在。

共有1个答案

巩光誉
2023-03-14

请仔细阅读文档的这一部分:https://github.com/intuit/karate#contains-short-cuts

* def json = { id: 1, priority: 1, compRound: { id: 1, comp_id: 89 } }
* def compRound = { id: '#number' }
* match json == { id: '#number', priority: '#number', compRound: '#(^compRound)' }
 类似资料:
  • 早上好 我刚刚开始使用JSON,所以我知道这是一个非常基本的问题,有人能指出我在尝试验证下面的事件和问题ID方面的错误吗? id字段似乎已成功验证,但我的文件在尝试验证时失败。

  • 我试图为下面的响应编写JSON模式。响应是动态的它可以是细节或细节。如果响应中的是,那么响应将包含人对象(组织对象将不可用)。如果是,组织详细信息将包含在响应中(人对象将不可用)。下面给出了两种不同的预期反应 我试图使用下面给出的模式使上述条件有效 我目前面临的问题是,如果响应中的是,它会抛出以下错误 是否有任何方法可以在模式中指定,如果person对象可用,则organization对象将不可用

  • 我只是想知道如何进行条件模式验证。API响应是基于键的动态响应。如果是,那么,人的详细信息将被包括,如果是组织的详细信息将被包括在JSON响应中。所以响应可以是以下任何一种形式 我为验证上述2个场景而创建的架构如下 但是架构与实际响应不匹配。我应该对架构进行哪些更改才能使其工作?

  • 我试图用空手道验证响应模式,但数组存在问题。附加响应和功能以及my schema.json。 回应- } responseSchema.json {"页面":"#编号","per_page":"#编号","总计":"#编号","total_pages":"#编号","数据": "#[] #对象","支持":"#对象"}

  • 每当我试图验证一个模式或使用模糊匹配来验证来自JSON对象中响应的布尔字段时,尽管输入了不正确的数据,它似乎总是通过。 为了便于查询,让我们将重点放在使用内联模糊匹配,就像将模式存储在单独的文件中一样。 功能文件: 答复: 我断言的目的是断言每个值以任何顺序返回正确的值类型。如果由于任何原因没有返回该值,或者存在比模式中定义的值更多的值,我希望测试失败。我怎样才能做到这一点? 我假设use。但是,

  • 我有下面的xml响应,我需要使用空手道断言“result”值 我能够获取“值”对象的数据,但不能获取“结果”元素的数据。