Automated tests 使用包含在函数中的空手道DSL过滤器阵列

Automated tests 使用包含在函数中的空手道DSL过滤器阵列,automated-tests,karate,Automated Tests,Karate,我试图构建一个函数来过滤没有“字母数字”字符作为第一个字母的用户名 我首先调用这个Java方法来获取所有字母数字字符 公共静态字符串[]alphanumericAlphabet(){ 字符串[]字母,数字={“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“A”、“B”、“C”、“D”、“E”、“F”、“G”、“G”、“H”、“I”、“J”、“K”、“K”、“L”、“L”、“M”、“O”、“P”、“Q”、“R”、“S”、“T”、“U”、“V”、“W”、“X”、“Y

我试图构建一个函数来过滤没有“字母数字”字符作为第一个字母的用户名

我首先调用这个Java方法来获取所有字母数字字符

公共静态字符串[]alphanumericAlphabet(){ 字符串[]字母,数字={“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“A”、“B”、“C”、“D”、“E”、“F”、“G”、“G”、“H”、“I”、“J”、“K”、“K”、“L”、“L”、“M”、“O”、“P”、“Q”、“R”、“S”、“T”、“U”、“V”、“W”、“X”、“Y”、“Z”、“A”、“B”、“C”、“D”、“E”、“G”、“H”、“I”、“J”、“L”、“M”、“N”、“O”、“P”、“P”、“R”、“S”、“T”、“U”、“V”、“W”、“W”、“X”、“Y”、“Z”}; 返回字母和数字; }

然后在我的测试中:

  • def alphabet=alphanumericAlphabet()
  • def filterUsersCall=函数(用户){返回字母表.includes(用户.givenName[0])}
  • def filteredUsers=karate.filter(usersList,filterUsersCall)
第二行返回一个错误,表示“includes”不是函数

我怎样才能解决这个问题

谢谢

也许#regex更好

但你看:

* def letters = [ 'A', 'B', 'C' ]
* def isValid = function(x){ return letters.contains(x.substring(0,1)) }
* def data = [ 'XXX', 'BBB', 'AAA' ]
* def temp = karate.filter(data, isValid)

您是否尝试过
包含
?有可能它被转换为Java
List
so contains可能与contains一起工作,我得到“alphabet.contains不是函数”;-)问题实际上在于“字母表”变量类型。我在Java方法中将String[]替换为List,现在我的测试工作正常(使用“contains”)。感谢两位(巴布和彼得)