У меня действительно странная проблема.
Я хочу добавить два списка в один список, но похоже, что каратэ не поддерживает эту функцию, поэтому я пишу функцию JS.
function(lists){
var arr = []
for each (var list in lists){
for each (var item in list){
arr.push(item);
}
}
return arr;
}
И я пишу этот файл функций длятестирование:
Feature:
Scenario:
* def appendList = read('../utils/append-list.js')
* def arr = [{a: 'a'}, {b: 'b'}, {c: 'c'}]
* def arr1 = [{a: 'a'}, {b: 'b'}, {c: 'c'}]
* def arr2 = appendList([arr, arr1])
* print 'arr2', arr2
* def xx = { aa: '#(arr2)' }
* print 'xx', xx
* copy yy = xx
* print 'yy', yy
* match xx == yy
Вот журнал:
16:00:28.424 [main] INFO com.intuit.karate - [print] arr2 [
{
"a": "a"
},
{
"b": "b"
},
{
"c": "c"
},
{
"a": "a"
},
{
"b": "b"
},
{
"c": "c"
}
]
16:00:28.444 [main] INFO com.intuit.karate - [print] xx {
"aa": {
"0": {
"a": "a"
},
"1": {
"b": "b"
},
"2": {
"c": "c"
},
"3": {
"a": "a"
},
"4": {
"b": "b"
},
"5": {
"c": "c"
}
}
}
16:00:28.466 [main] INFO com.intuit.karate - [print] yy {
"aa": [
{
"a": "a"
},
{
"b": "b"
},
{
"c": "c"
},
{
"a": "a"
},
{
"b": "b"
},
{
"c": "c"
}
]
}
16:00:28.469 [main] ERROR com.intuit.karate - assertion failed: path: $.aa, actual: [object Array], expected: [{"a":"a"},{"b":"b"},{"c":"c"},{"a":"a"},{"b":"b"},{"c":"c"}], reason: actual value is not list-like
com.intuit.karate.exception.KarateException: path: $.aa, actual: [object Array], expected: [{"a":"a"},{"b":"b"},{"c":"c"},{"a":"a"},{"b":"b"},{"c":"c"}], reason: actual value is not list-like
at com.intuit.karate.StepDefs.matchNamed(StepDefs.java:540)
at com.intuit.karate.StepDefs.matchEquals(StepDefs.java:526)
at ✽.* match xx == yy(kromotus/test/test.feature:12)
com.intuit.karate.exception.KarateException: path: $.aa, actual: [object Array], expected: [{"a":"a"},{"b":"b"},{"c":"c"},{"a":"a"},{"b":"b"},{"c":"c"}], reason: actual value is not list-like
at com.intuit.karate.StepDefs.matchNamed(StepDefs.java:540)
at com.intuit.karate.StepDefs.matchEquals(StepDefs.java:526)
at ✽.* match xx == yy(kromotus/test/test.feature:12)
Я не понимаю, почему иногда массив является массивом, иногда он становится объектом?