Почтальон Тестирование - Утверждение ТОЛЬКО установленный ключ: пары значений в объекте, никаких неожиданных возвращений - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь понять, как написать утверждение в почтальоне, которое проверит, что в объекте нет дополнительных пар ключ: значение.

Например, вот некоторые тестовые данные:

"testArray": [
{ 
  "key-1" : "value1a"
  "key-2" : "value2a"
},    
{ 
  "key-1" : "value1b"
  "key-2" : "value2b"
},
]

Я могу легко написать утверждение, что testArray имеет длину '2', я могу проверить фактические значенияпары ключ-значение возвращаются, как и ожидалось. У меня проблема с выяснением, как выяснить, что ключ-3 НЕ был возвращен.

Теперь, если я знаю, что такое возможный ключ, я могу убедиться, что он указан как «неопределенный», но если я не знаю имя пары потенциальных значений ключа, я хочу убедиться, что ямогу утверждать, что это ТОЛЬКО опции, которые я хочу.

Если нет простого решения, такого как возможность подсчета количества пар ключ: значение в объекте, мне нужно было бы пойти по маршрутусоздать цикл для перебора объектов в массиве, чтобы сравнить их со списком допустимых значений?

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Я не уверен, какие тесты / утверждения у вас есть на данный момент, но вы можете расширить их, чтобы добавить это:

pm.test("Each object should have 2 keys", () => {
    _.each(pm.response.json().testArray, (item) => {
        pm.expect(item).to.be.an('object').and.have.keys(['key-1', 'key-2'])
    })
})

Это всего лишь пример, основанный на данных, которые вы включили, вашиданные не похожи на фактический ответ, потому что это недопустимый JSON, но я изменил его, чтобы увидеть, что тест пройден / не пройден.

Это утверждение будет проверять, что каждый элемент в массиве testArray является объектоми он имеет только ключи, которые должны быть там. Если вы добавите третий ключ к вашим данным, утверждение не будет выполнено.

0 голосов
/ 23 октября 2019

HI это должно быть сделано с использованием схемы Json и без использования цикла for

См. Ответ ниже:

https://stackoverflow.com/a/58436108/6793637

Вы можете создать схему, просто скопировав свой файлответ в

https://jsonschema.net/

Обязательно установите флажок перед созданием схемы

enter image description here

...