传递表格以调用read()JavaScript函数的语法

时间:2018-07-05 14:16:29

标签: javascript karate

传递类似表的语法是什么

* table user
| UserId | UserType    | UserRoles        |
| 123    | 'Regional'  | { Role : Ninja } |

作为外部javascript函数的参数,其返回值存储在变量中?

我在想* def uid = call read('base64-encoder.js') { user } 该函数定义为

function(uid) {
  var Base64 = Java.type('java.util.Base64');
  var encoded = Base64.getEncoder().encodeToString(uid.bytes);
}

但这会给出一个ParserException:文件位置7的意外结尾:null

2 个答案:

答案 0 :(得分:2)

在这种情况下,将空手道表传递给外部javascript函数的语法为

* def uid = call read('base64-encoder.js') user

只需为函数参数添加一个空格。

JavaScript只是不知道如何处理它得到的列表项。 因此,为了使此函数不会在类型检查中失败,必须首先将表行强制转换为这样的字符串:

* string me = user[0]
* def uid = call read('base64-encoder.js') me

这样,java不会在表上阻塞,您将从编码字符串中得到格式正确的JSON字符串:

function(uid) {
  var Base64 = Java.type('java.util.Base64');
  var encoded = Base64.getEncoder().encodeToString(uid.bytes);
  return encoded;
}

答案 1 :(得分:1)

您是否要在数据库表中保存Javascript对象?

您可以将Javascript值转换为JSONJSON是一个String,您可以轻松保存它。示例:

  // convert to JSON
  var jsonDatas = JSON.stringify(yourDatas);
  // convert to JavaScript value
  var javascriptDatas = JSON.parse(jsonDatas);

它可以工作,但我不建议在数据库中保存JSON。

希望它能对您有所帮助。