Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как правильно проверить массив? Нужно ли проверять значения элементов массива?

phpunit
assert
php
Теги: #<Tag:0x00007f7b64510568> #<Tag:0x00007f7b64510400> #<Tag:0x00007f7b64510298>

(Evgen777) #1

Добрый день,

интересует вопрос (лучшие практики) как правильно проверить массив данных?

В респонзе приходит массив с данными вида:

$response = [
    'data' => [
        'customer' => [
            'firstname'  => 'FirstName',
            'lastname'  => 'LastName'
        ],
        'addresses' => [
            'address_1' => 'Test Address 1',
            'address_2' => 'Test Address 2',
            'address_3' => 'Test Address 3'
        ]
    ]
];

Вопрос: Нужно ли проверять значения элементов массива используя assertEquals(), или же ограничиться assertArrayHasKey() и assertNotEmpty() ?


(Vasiliy Rakshin) #2

Вопрос, а на более верхнем уровне что нужно сделать? Отсюда и плясать что и как обрабатывать в массиве.


(Сергей Блохин) #3

Идите сверху вниз.
Сначала сделайте проверку 200 статуса ответа для всех методов.
Потом то, что приходит JSON.
Потом структуру assertArrayHasKey.
Потом типы данных в значениях ключей.
Потом соответствие значений регуляркам (для имени условвные /[a-zA-Z]{30}/).
И последним этапом проверку значений ключей ожидаемым значениям.


(Evgen777) #4

На более верхнем уровне - что имеется в виду? Вообще задача (на разработку) состояла в том, что в респонз добавляются еще несколько ключей (addresses)… Собственно вопрос: необходимо ли проверять данные (адреса)??? Или же просто проверить в тесте что ключ “addresses” есть и он не пустой?


(Yaroslav Pernerovskyy) #5

Тут надо смотреть есть ли выше (юнит тесты) или ниже (юай, фанкшинал) тесты которые проверяют значения, которые передаются в эти поля, если есть, то не надо дублировать. Если нет, то конечно надо проверять что значения соответствуют ожидаемым.