javascript - 空手道框架:将从 csv 读取的值作为参数传递给 javaprogram
问题描述
如何使用空手道框架将值作为参数动态传递给 java 程序。
我正在尝试从 csv 文件中读取数据。转换为json格式
CSV 数据
FirstName,MiddleName,LastName
"John","K","Kennady"
"Mahesh","g",Readdy"
* def csvData = read('csv Data')
* read csvData
读取 csvData 的输出
[{"FirstName" : "John","MiddleName" : "K", "LastName" : "Kennady"},{"FirstName" : "Mahesh","MiddleName" : "g", "LastName" : "Readdy"}]
我能够从 json 中提取值,结果如下所示
values = ["John", "K", "Kennady"]
我应该将值作为参数传递给下面的命令 JavaDemo.doWorkStatic
* def JavaDemo = Java.type('com.mycompany.JavaDemo')
* def result = JavaDemo.doWorkStatic('Firstname','MiddleName','lastname')
在 javascript 中,我们可以将数组分配给可以分配给 java 参数的数组。但是以下步骤在空手道框架中是不可能的
[a, b ,c ] = Values
cosnole.log(a)
cosnole.log(b)
cosnole.log(c)
def result = JavaDemo.doWorkStatic(a,b,c)
我怎样才能实现将值作为参数传递的最后一步
解决方案
干得好:
* def v = ['John', 'F', 'Kennedy']
* def result = JavaDemo.doWorkStatic(v[0], v[1], v[2])
空手道不是JavaScript。如果您想更改任何内容,请提供代码。
编辑:请注意 JSON 数组会自动转换为 Java List
-s。请阅读文档:https ://github.com/intuit/karate#calling-java
例如,如果你有这个:
public static String concat(List<String> list) {
StringBuilder sb = new StringBuilder();
for (String s : list) {
sb.append(s);
}
return sb.toString();
}
你可以这样做:
* def array = ['a', 'b', 'c']
* def res = Utils.concat(array)
推荐阅读
- selenium - Selenium 的端口是什么意思?
- java-8 - Java8 流条件处理
- google-bigquery - 将 table_id 添加到 BigQuery 中多个表的结果中
- python - 在 Maya Python 中更新对象名称的问题
- html - 如何将“-”放入表单html
- c# - 在 Xamarin android 活动之间传递数据
- reactjs - React 有时不使用更新的源文件
- amazon-eks - Populating AWS Alb Ingress Annotations from ConfigMap
- python - 如何防止在 django 中提交带有空 CKEditor 的表单
- html - 如何从轮播引导程序中删除灰色空间