【发布时间】:2019-05-31 08:36:06
【问题描述】:
无法在空手道中通过 Java 调用创建动态场景大纲。
例如,我可以使用“硬编码”Json 数组创建动态场景大纲:
* def foobar = [{ 'type': 'app' }]
但是当我尝试从 Java 类生成相同的 Json 数组时,我总是收到以下空手道警告,并且动态场景大纲永远不会执行:
警告 com.intuit.karate - 忽略动态表达式,未评估为列表
-- 或者--
警告 com.intuit.karate - 忽略动态表达式列表项 0,而不是类似地图
我尝试使用空手道关键字“def”、“string”、“json”作为 var 类型,但没有成功。我什至尝试在 Java 方法中对上面显示的相同字符串进行硬编码,但没有成功。
我在“背景:”中声明/调用我的 Java 类并打印返回的内容,它“看起来”正确。
Background:
* def IdaDataApiUtil = Java.type('data.IdaDataApiUtil')
* def foobar = IdaDataApiUtil.getClientExample('ida-sp')
* print foobar
然后我尝试在我的“示例:”中使用 JsonArray,如下所示:
Examples:
| foobar |
此时我收到上述错误,具体取决于我尝试返回的内容(JsonArray、JsonObject、Map、List)。
如果我只是使用硬编码的'def':
* def foobar = [{ 'type': 'app' }]
它按预期工作。
在我的 Java 代码中,我尝试了各种方法:
硬编码的Json字符串:
public static String getClientExample() {
return "[{ 'type': 'app' }]";
}
列表:
public static List<String> getClientExample() {
List<String> list = new ArrayList<>();
list.add("'type': 'app'");
return list
}
地图:
public static Map<String, Object> getClientExample() {
Map<String, Object> map = new HashMap<>();
map.put("type", "app");
return map;
}
我在两个列表/地图中都使用了不同的键/值,但没有运气。我也尝试过 JSONObject/JSONArray 但也没有运气。
我觉得我遗漏了一些明显的东西,但我现在无法透过树木看到森林......
【问题讨论】:
标签: karate