Можно ли сравнить два JSON массива и получить их разность в результате в рамках каратэ? - PullRequest
1 голос
/ 21 апреля 2020

Я использую соответствует каждому , он сравнивает каждый элемент, но мне нужна разница этих двух. Например,

def data1 = {foo: [{bar: 1, baz: 'a'}, {bar: 2, baz: 'b'}, {bar: 3, baz: 'c' }]}

def data2 = {foo: [{bar: 4, baz: 'x'}, {bar: 2, baz: 'b'}, {bar: 3, baz: 'c '}]}

тогда мне нужно только {foo: [{bar: 1, baz:' a '}, {bar: 4, baz:' x '}]}

Не совпадающие элементы?

1 Ответ

1 голос
/ 22 апреля 2020

Этот код будет собирать позиции несовпадающих элементов, попробуйте print indexes в конце:

* def data1 = [{ bar: 1, baz: 'a' }, { bar: 2, baz: 'b' }, { bar: 3, baz: 'c' }]
* def data2 = [{ bar: 4, baz: 'x' }, { bar: 2, baz: 'b' }, { bar: 3, baz: 'c' }]
* def indexes = []
* def fun = 
"""
function(x, i) {
  var result = karate.match(data1[i], data2[i]);
  if (!result.pass) karate.appendTo(indexes, i);
}
"""
* karate.forEach(data1, fun)

Я также думаю, что вы неправильно используете каратэ, может быть, вы просто должны написать код или использовать какой-то другой фреймворк. Похоже, вы не проводите тестирование.

...