我的有效载荷有一个标签数据,我将其值设置为“测试”......
* set test.input.data = 'test'
* def listData = ["testcoding", "testcoding", "testcoding"]
* match each listData contains '#(test.input.data)'
当我进行匹配时,它失败并出现以下错误 -
$ | match each failed at index 0 (LIST:STRING)
["testcoding", "testcoding", "testcoding"]
'#(test.input.data)'
$ [0] | not equal (STRING:STRING)
'testcoding'
'test'
但是当我将值直接传递给 match 语句时,它通过了验证 -
* set test.input.data = 'test'
* def listData = ["testcoding", "testcoding", "testcoding"]
* match each listData contains 'test'
这是预期的行为吗?为什么当我们在匹配条件下将子字符串作为变量传递时验证会失败?我做错了什么吗?
非常感谢您的帮助。如果您需要有关该错误的更多详细信息,请随时告诉我。
PS-如果test.input.data
不是子字符串,则会毫无问题地返回。
例子 :-
* set test.input.data = 'testcoding'
* def listData = ["testcoding", "testcoding", "testcoding"]
* match each listData contains '#(test.input.data)'
结果 - 通过/成功
该
contains
关键字仅适用于 JSON 数组。当尝试执行“子字符串”时,这类内容就会进入 JavaScript 的世界,执行此操作的 API 称为includes()
。尝试一下这个:
请参阅文档了解其含义
#?
: https: //github.com/karatelabs/karate#self-validation-expressions