Каратэ: Удалить элемент c динамо из JSON - PullRequest
1 голос
/ 26 февраля 2020
* def res1 = {"member":{"muid":"MBR1"},"part":[{"PID":"M123"},{"supportedMembers":[{"muid":"MBR3","status":{"code":"A"}},{"muid":"MBR2","status":{"code":"I"}}]}]}

* def res2 = {"members":[{"member":{"muid":"MBR2","test":[{"EID":"E123"}]}},{"member":{"muid":"MBR3","test":[{"EID":"E123"}]}}]}

Каратэ: сопоставить элементы массива двух разных JSON У меня есть еще одно требование, связанное с моим предыдущим постом.

* def id = res1.member.muid

Я хочу удалить id из ответа res2, который может быть любым в res2.members.member, и выполните сопоставление с res1, чтобы увидеть наличие muids. Я пробовал что-то похожее ниже, но оно не работает:

* karate.remove('$res2.members[*]..muid','$.muid[id]') 

1 Ответ

2 голосов
/ 26 февраля 2020

Код образца:

Feature: Validation

Scenario:

    * def res1 = {"member":{"muid":"MBR1"},"part":[{"PID":"M123"},{"supportedMembers":[{"muid":"MBR3","status":{"code":"A"}},{"muid":"MBR2","status":{"code":"I"}}]}]}
    * def res2 = {"members":[{"member":{"muid":"MBR2","test":[{"EID":"E123"}]}},{"member":{"muid":"MBR3","test":[{"EID":"E123"}]}}]}
    * def id = res1.member.muid
    * def res2ids = $res2.members[*]..muid
    * def data2 = karate.mapWithKey(res2ids, 'muid')
    * print data2
    * def res2ids = karate.jsonPath(data2, "$[?(@.muid != '" + id+ "')]")
    * def res2ids = $res2ids[*]..muid
    * print res2ids
    * match res1.part[1].supportedMembers[*].muid contains only res2ids
...