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

如何在空手道中验证json未命名数组

百里嘉泽
2023-03-14

我试图验证下面的响应,这是一个没有数组名称的数组。

[
    {
        "soldTo": "0000100139",
        "productId": "88175838",
        "catalogNumber": "130C-3/4X30FT",
        "manufacturerName": "3M CO. - ELECTRICAL MARKETS DIV.",
        "quantity": "000001",
        "lastPurchaseDate": "Jun 13, 2018 12:00:00 AM",
        "description": "30-feet x 3/4-inch black Scotch&#174 linerless rubber splicing tape.",
        "imageUrl": "https://static.graybar.com/supplierimages/3m_new/130C-1-12X30FT-th.png"
    },
    {
        "soldTo": "0000100139",
        "productId": "25438652",
        "catalogNumber": "312-POUCH",
        "manufacturerName": "3M CO. - ELECTRICAL MARKETS DIV.",
        "quantity": "000011",
        "lastPurchaseDate": "Jul 27, 2018 12:00:00 AM",
        "description": "Yellow Scotchlok&#8482 electrical spring connector in a pouch for 22 to 8 AWG wire.",
        "imageUrl": "https://static.graybar.com/supplierimages/3m_new/312-BAG-th.png"
    },
    {
        "soldTo": "0000100139",
        "productId": "88175944",
        "catalogNumber": "33+SUPER-3/4X66FT",
        "manufacturerName": "3M CO. - ELECTRICAL MARKETS DIV.",
        "quantity": "000001",
        "lastPurchaseDate": "Jun 13, 2018 12:00:00 AM",
        "description": "66-feet x 3/4-inch black Scotch&#174 Super 33+&#8482 vinyl electrical tape.",
        "imageUrl": "https://static.graybar.com/supplierimages/3M_New/MMM_33Super34x66FT-th.png"
    }
]

当我尝试使用下面的匹配时,每个脚本都会出错。

And match each response.soldTo == '#string'
    And match each response.productId == '#string'
    And match each response.catalogNumber == '#string'
    And match each response.manufacturerName == '#string'
    And match each response.quantity == '#string'
    And match each response.lastPurchaseDate == '#string'
    And match each response.description == '#string'
    And match each response.imageUrl == '#string

'

错误:com.intuit.karate.exception.KarateExcture:期望在路径$中找到属性为['soldTo']的对象,但找到了'net.minidev.json.JSONArray'。com.intuit.karate.StepDefs.match命名(StepDefs.java:540)com.intuit.karate.StepDefs.matchEquals(StepDefs.java:526)at.并匹配每个response.soldTo=="0000100139"(以前的订单项目/previously-order-items.feature:24)

共有1个答案

吕嘉赐
2023-03-14

您在JsonPath中犯了一个错误。请仔细阅读文档和示例。

* match each response[*].soldTo == '#string'
* match each response[*] contains { productId: '#string', catalogNumber: '#string' }
 类似资料:
  • 我在响应中有一个类似这样的未命名JSON数组,我想检查它是否包含。我可以知道我怎样在空手道中检查吗?

  • 我一直在验证下面的回答。 当我使用空手道发出获取请求时,我会得到以下响应,我想验证它。 我试过: 它说它不是字符串。你能帮我确认一下这个请求吗?

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

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

  • 我试图验证非json格式的错误响应体。我尝试了使用模式以及使用包含匹配的关键字。这对我不起作用。 在post调用中观察到多个匹配时从API返回的实际响应: 我的空手道特点: 尝试*匹配实际的[0] == '#(^partSchema)'也从https://gist.github.com/ptrthomas/2a1e30bcb4d782279019b3d5c10b3ed1。不工作

  • 我需要验证一个JSON响应(如下所示),并检查JSON数组中是否有任何一个项的日期为createdDate。 “createdDate”实际上是作为时间戳返回的,但我没有实际值。我唯一需要验证的是今天的日期。项目的顺序也不保证。我查看了https://intuit.github.io/karate/指定的javascript宏,但它没有我正在尝试做的示例。请让我知道任何建议。