Как применять фикстуры для приемочных тестов?

Всё про тестирование в Yii 2.0
Ответить
undestroyer
Сообщения: 113
Зарегистрирован: 2014.01.06, 13:46

Как применять фикстуры для приемочных тестов?

Сообщение undestroyer » 2017.11.16, 10:43

Создаю API, в нем есть метод авторизации
/site/login
, в котором пользователь получает токен авторизации. Для остальных запросов нужно использовать этот токен и передавать его как HTTP. Логика подсказывает, что мои приемочные тесты должны либо:
1) Каждый раз выполнять авторизацию и брать актуальный токен авторизации
либо
2) получать токен из базы (фикстуры?) и использовать его в работе.

Первый подход мне не нравится потому что не хочу просто так при каждом запросе делать авторизацию. Второй подход я не знаю как сделать в рамках приемочных тестов. Не понимаю какие методы нужно использовать для встраивания фикстуры в приемочный тест. Подскажите как это сделать правильно.

Nex-Otaku
Сообщения: 555
Зарегистрирован: 2016.07.09, 21:07

Re: Как применять фикстуры для приемочных тестов?

Сообщение Nex-Otaku » 2017.11.16, 16:58

В шаблоне app-advanced уже есть готовый тест на авторизацию и к нему как раз идёт готовая фикстура БД для создания тестового аккаунта пользователя. Используйте её, либо разберите как она работает, и сделайте аналогичную.

undestroyer
Сообщения: 113
Зарегистрирован: 2014.01.06, 13:46

Re: Как применять фикстуры для приемочных тестов?

Сообщение undestroyer » 2017.11.17, 13:22

Nex-Otaku писал(а):
2017.11.16, 16:58
В шаблоне app-advanced уже есть готовый тест на авторизацию и к нему как раз идёт готовая фикстура БД для создания тестового аккаунта пользователя. Используйте её, либо разберите как она работает, и сделайте аналогичную.
В шаблоне app-advanced нет приемочных тестов на авторизацию. Только Unit. В unit тесты я понимаю как подключить фикстуру, но как это сделать для приемочных тестов API?

Аватара пользователя
ElisDN
Сообщения: 4731
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как применять фикстуры для приемочных тестов?

Сообщение ElisDN » 2017.11.17, 14:36

undestroyer писал(а):
2017.11.17, 13:22
В шаблоне app-advanced нет приемочных тестов на авторизацию. Только Unit.
В Functional есть.
Не забудьте пройти мастер-класс по Yii2.

Nex-Otaku
Сообщения: 555
Зарегистрирован: 2016.07.09, 21:07

Re: Как применять фикстуры для приемочных тестов?

Сообщение Nex-Otaku » 2017.11.18, 19:39

В приёмочных тестах также всё подключается через конфиги тестового окружения.

undestroyer
Сообщения: 113
Зарегистрирован: 2014.01.06, 13:46

Re: Как применять фикстуры для приемочных тестов?

Сообщение undestroyer » 2017.11.22, 07:45

ElisDN писал(а):
2017.11.17, 14:36
undestroyer писал(а):
2017.11.17, 13:22
В шаблоне app-advanced нет приемочных тестов на авторизацию. Только Unit.
В Functional есть.
Да, в Functional есть пример работы с фикстурой, но в нем невозможно отправить POST запрос на API.
В AcceptanceTesterActions есть метод sendPOST(), чего нет в FunctionalTesterActions. Хотя в FunctionalTesterActions есть метод grabFixture, которого нет в AcceptanceTesterActions.

undestroyer
Сообщения: 113
Зарегистрирован: 2014.01.06, 13:46

Re: Как применять фикстуры для приемочных тестов?

Сообщение undestroyer » 2017.11.22, 07:46

Nex-Otaku писал(а):
2017.11.18, 19:39
В приёмочных тестах также всё подключается через конфиги тестового окружения.
Можно пример, как через конфиг тестового окружения настроить фикстуру? Скорее вы предлагаете использовать СУБД с тестовой базой, но это неудобно, т.к. для выполнения большого количества запросов к методам, доступным только авторизованным пользователям, придется каждый раз вызывать авторизацию. Я хочу отдельно тестировать авторизацию, отдельно работу с данными.

Аватара пользователя
ElisDN
Сообщения: 4731
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как применять фикстуры для приемочных тестов?

Сообщение ElisDN » 2017.11.22, 08:58

undestroyer писал(а):
2017.11.22, 07:45
Хотя в FunctionalTesterActions есть метод grabFixture, которого нет в AcceptanceTesterActions.
Пропишите part: [init, orm, fixtures] в acceptance.suite.yml и такие же методы появятся в приёмочных.
Не забудьте пройти мастер-класс по Yii2.

undestroyer
Сообщения: 113
Зарегистрирован: 2014.01.06, 13:46

Re: Как применять фикстуры для приемочных тестов?

Сообщение undestroyer » 2017.11.23, 06:20

ElisDN писал(а):
2017.11.22, 08:58
undestroyer писал(а):
2017.11.22, 07:45
Хотя в FunctionalTesterActions есть метод grabFixture, которого нет в AcceptanceTesterActions.
Пропишите part: [init, orm, fixtures] в acceptance.suite.yml и такие же методы появятся в приёмочных.
Спасибо Дмитрий и Nex-Otaku! Все действительно решилось этой строчкой конфигурации.

Ответить