为空手道中的每个元素匹配String json数组响应

时间:2020-01-10 07:35:57

标签: java spring-boot integration-testing karate

我有一个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'也会失败。有帮助吗?

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:1)

如果您的空手道代码

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'