@darkoment

Как протестировать json по его ключам?

У меня есть приложение которое разделено на бэкенд и клиент (Десктопное приложение). Обмен происходит между собой через в json формате (использую nlohmann/json). Каждый раз, когда на бэкенде происходят изменения, в клиенте эти изменения нужно сразу же вносить (иначе сломается вся связь между клиентом и бэкендом). Встал вопрос о написании теста/тестов для этого дела и тут возник вопрос: как вообще можно протестировать json и можно ли вообще произвести тест по его ключам, чтобы провести потом сравнение? Есть ли какой-то универсальный метод, который бы отправлял запрос на бэкенд, получал бы ответ чтобы производить сравнение всех ключей, а не каждого ключа по отдельности?
К примеру у меня есть :
"courtcase": [
      {
        "id": 2,
        "office": 2,
        "cid": "4222",
        "commentary": "",
        "date_received": "2021-07-06T12:17:16.355Z",
        "purchases": [],
        "researches": [],
        "participants": [],
        "court_transfer_date": "2021-07-06T12:17:10Z",
        "court_handover_date": null,
        "date_expected_payment": "2021-07-06T12:17:12Z",
        "billing_date": null,
        "payment_date": null,
        "extra_docs_requested_date": null,
        "extra_docs_received_date": null,
        "courrier_handover_date": null,
        "court": [],
        "judges": [],
        "related_collectors": [],
        "related_courriers": [],
        "related_departments": [],
        "related_experts": [],
        "related_lawyers": [],
        "related_managers": []
      }

но на клиенте допустим отсутствуют два ключа
"related_lawyers": []
и
"related_managers": []
И чтобы каждый раз не смотреть вручную, что на клиенте, что на бэкенде, можно ли написать тест, который сразу бы показывал, что есть на бэкенде и чего нет на клиенте?

UPD: Как произвести сравнение по всем ключам, а не по каждому по отдельности? К слову, мне нужно написать тест исключительно на стороне клиента
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Hungryee
Вообще говоря не вижу смысла сравнивать то что на клиенте, а что на сервере
Json от сервера всегда должен иметь приоритет и заменять собой состояние клиента.

Но если прям нужно, то нужно сравнивать в любом случае контент обоих объектов

По крайней мере, сравнить длины обоих объектов через (js) Object.keys(myObject).length;

Если они не равны, то заменять жсон клиента жсоном сервера. Если равны, то проверять контент каждого поля
Для каждого вложенного поля проводить эту же рекурсивную проверку
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы