karate - 匹配空手道中的每个项目
问题描述
我想断言总价格大于等于 price_net。你能告诉我我怎样才能正确地做到这一点吗?这就是我在atm所做的。
Scenario: Testing
* def response =
"""
{
"prices": [
{ "price_net":"10.50", "price_gross":"12.25" },
{ "price_net":"10.50", "price_gross":"12.25" },
{ "price_net":"10.50", "price_gross":"12.25" },
{ "price_net":"10.50", "price_gross":"12.25" },
{ "price_net":"10.50", "price_gross":"12.25" },
{ "price_net":"10.50", "price_gross":"12.25" }
]
}
"""
* match each response.prices[*].price_gross == '#? _ >= 0 && _ >= response.prices[*].price_net'
我认为断言语句中的“*”是问题所在。因为当我运行这个
* match response.prices[0].price_gross == '#? _ >= 0 && _ >= response.prices[0].price_net'
它工作正常。请建议。提前致谢。
解决方案
示例代码:
Feature: Validation
Scenario: Validation
* def diff =
"""
function (A, B) {
var C = [];
for(var i = 0; i < A.length; i++) {
C.push(parseFloat(A[i]) - parseFloat(B[i]));
}
return C;
}
"""
* def response =
"""
{
"prices": [
{ "price_net":"10.50", "price_gross":"12.25" },
{ "price_net":"10.50", "price_gross":"12.25" },
{ "price_net":"10.50", "price_gross":"12.25" },
{ "price_net":"10.50", "price_gross":"12.25" },
{ "price_net":"10.50", "price_gross":"12.25" },
{ "price_net":"10.50", "price_gross":"12.25" }
]
}
"""
* json temp = response
* def pgarr = get temp.prices[*].price_gross
* def pnarr = get temp.prices[*].price_net
* def sub = diff(pgarr,pnarr)
* match each sub == '#? _ >= 0'
推荐阅读
- python - Python 正则表达式表示第二个最后一个单词
- python - 继续接收 FileNotFoundError: [Errno 2] No such file or directory: '' 在 python 中写入文件时出错
- python - 如何使用索引号遍历 python 列表?
- javascript - 在没有明确条件```while(y)```的情况下没有得到循环
- pagination - 如何使用带有 Pageable 的 Spring Data JPA 分页来更改数据?
- typescript - 我可以在 Typescript 方法装饰器中访问目标类实例吗?
- git - 为 git 历史中的所有提交更改 git 子模块的远程存储库
- php - 提交时检查 $_FILES 变量是否为空 eg: variableIsEmpty($_FILES["icon"])
- python - Pyspark coalesce vs coalesce:秘密相同或只是不幸的命名?
- kotlin - Kotlinx 序列化器和单值域类型