【问题标题】:Match String json array response for each element in Karate为空手道中的每个元素匹配字符串 json 数组响应
【发布时间】:2020-01-10 07:35:57
【问题描述】:

我有一个 api,它返回字符串 json 数组作为响应,如下所示。响应中还有其他元素。

"contacts": [
  "externaldeveloper1@exampledomain.com",
  "externa2developer1@exampledomain.com"
]

现在我需要匹配这个数组中的每个元素来检查它的值。

在功能文件中:

When method POST
Then status 200
* match  response.contacts contains ['externaldeveloper1@exampledomain.com', externa2developer1@exampledomain.com]

但出现语法错误:

match  response.contacts contains ['externaldeveloper1@exampledomain.com', externa2developer1@exampledomain.com]

即使我在做 assert response.contacts.[0] == 'externaldeveloper1@exampledomain.com' 这也失败了。有什么帮助吗?

【问题讨论】:

    标签: java spring-boot integration-testing karate


    【解决方案1】:

    为我工作。你一定有什么错别字或基本错误。

    * def response = { "contacts": [ "externaldeveloper1@exampledomain.com", "externa2developer1@exampledomain.com" ] }
    * match response.contacts contains [ 'externaldeveloper1@exampledomain.com', 'externa2developer1@exampledomain.com' ]
    * match response.contacts[1] == 'externa2developer1@exampledomain.com'
    

    【讨论】:

      【解决方案2】:

      如果你的空手道代码

      When method POST
      Then status 200
      * match  response.contacts contains ['externaldeveloper1@exampledomain.com', externa2developer1@exampledomain.com]
      

      和你在测试中使用的一样,那么语法错误是你忘记把第二封邮件放在引号里。

      正确:

      When method POST
      Then status 200
      * match  response.contacts contains ['externaldeveloper1@exampledomain.com', 'externa2developer1@exampledomain.com']
      

      原因

      * assert response.contacts.[0] == 'externaldeveloper1@exampledomain.com'
      

      失败很简单。 contacts 后面的点太多了。

      正确:

      * assert response.contacts[0] == 'externaldeveloper1@exampledomain.com'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-06
        • 1970-01-01
        • 1970-01-01
        • 2019-08-20
        相关资源
        最近更新 更多