Каратэ;Тип объекта не является выбрасывающим TypeError как "не объект" - PullRequest
1 голос
/ 06 марта 2019

С моим тестированием я собираюсь провести оценку объектов json в массиве. Пример выглядит так:

"sections": [
  {
    "internal_id": 10635,
    "uuid": "a56357fa-fbe6-BARS-89d4-8e8fdbda18b0",
  },
  {
    "internal_id": 10636,
    "uuid": "33a4c634-BARS-4b20-ac3d-54370b32d989",
  },
  {
    "internal_id": 10637,
    "uuid": "99443ce8-5007-4ec2-BARS-b459df30d33b",
  },
  {
    "internal_id": 10638,
    "uuid": "4a54a868-1bfa-BAZZ-93b1-d95a4b529cdf",
  }
]

Во время отладки я сделал это:

* print typeof(sections[0]) => это возвращается, говоря object

Я пытался оценить отдельные объекты следующим образом:

* eval Object.keys(sections[0]).length; => это возвращается с TypeError: <object_at_index_0> is not an Object in <eval>

У меня нет большого опыта работы с JS, но кто-нибудь может мне помочь с этим?

1 Ответ

3 голосов
/ 07 марта 2019

Вы можете написать ожидаемую схему для одного объекта JSON, а затем использовать match each для проверки ее для всех данных в массиве JSON.

* def sectionArray =
"""
{
"sections": [
  {
    "internal_id": 10635,
    "uuid": "a56357fa-fbe6-BARS-89d4-8e8fdbda18b0",
  },
  {
    "internal_id": 10636,
    "uuid": "33a4c634-BARS-4b20-ac3d-54370b32d989",
  },
  {
    "internal_id": 10637,
    "uuid": "99443ce8-5007-4ec2-BARS-b459df30d33b",
  },
  {
    "internal_id": 10638,
    "uuid": "4a54a868-1bfa-BAZZ-93b1-d95a4b529cdf",
  }
]
}
"""
* match each sectionArray.sections == {"internal_id":"#present","uuid":"#present"}

Вы также можете проверить размер массива,

* match sectionArray.sections == "#[4]"

См. Нечеткое соответствие

...