当我们将子字符串作为变量传递时,子字符串验证匹配失败

问题描述 投票:0回答:1

我的有效负载有一个标签数据,我将其值设置为“测试”..

   * 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'

但是当我将值直接传递给匹配语句时,它通过了验证 -

    * 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)'

结果 - 通过/成功

karate
1个回答
0
投票

contains
关键字仅适用于 JSON 数组。当尝试执行进入 Javascript 世界的“子字符串”时,执行此操作的 API 称为
includes()

所以试试这个:

* def data = [ 'testcoding', 'testcoding', 'testcoding' ]
* match each data == "#? _.includes('test')"
* match each data == "#? _.startsWith('test')"
© www.soinside.com 2019 - 2024. All rights reserved.