Невозможно создать динамический набросок сценария с помощью вызова Java в каратэ.
Я могу создать динамический план сценария с «жестко закодированным» массивом Json, например:
* def foobar = [{ 'type': 'app' }]
Но когда я пытаюсь сгенерировать тот же массив Json из класса Java, я всегда получаю следующее предупреждение (я) о каратэ, и план динамического сценария никогда не выполняется:
WARN com.intuit.karate - игнорирует динамическое выражение, не выводится в список
- ИЛИ -
WARN com.intuit.karate - игнорирование элемента 0 списка динамических выражений, не похожего на карту
Я пытался использовать ключевые слова каратэ 'def', 'string', 'json' в качестве типа var, но безуспешно. Я даже безуспешно пытался жестко кодировать ту же строку, показанную выше в методе Java.
Я объявляю / вызываю свой класс Java в «Background:» и печатаю то, что возвращается, и он «выглядит» правильно.
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, но там тоже не повезло.
Я чувствую, что мне не хватает чего-то очевидного, но сейчас я не вижу леса сквозь деревья ...