Akdmeh
@Akdmeh
PHP, Yii2, Music

Как загружать Global fixtures в Codeception + Yii2?

Как я понимаю, раньше там были другие механизмы, поэтому в интернете куча запутанной и старой документации и примеров, которые не работают толком со встроенным модулем Codeception (а не отдельным \yii\codeception как раньше).
Поэтому я уже все перепробовал, рылся в документации, в исходном коде, но так и не понял: как мне загружать определенные fixtures не при исполнении каждого теста, а только один раз в файле-группе тестов?

А также: можно ли как-то удалять определенную ненужную информацию с базы данных с unit TestCase, то есть, какой-то метод, который сработает в конце группы тестов? Как это делать более правильным путем?

Хочу становится лучше и начать писать тесты, но эта фрагментированная документация уже все нервы съела...

Как я понял, есть еще класс InitDbFixture, но вообще непонятно, что с ним делать - как загружать...
Там вроде бы есть какой-то файл tests/fixtures/initdb.php, но о его синтаксисе я не нашел ни слова.

Возможно также, это нужно подгружать с помощью yii fixture/load - но как это автоматизировать и не делать каждый раз при проведении тестов?
  • Вопрос задан
  • 857 просмотров
Решения вопроса 1
Akdmeh
@Akdmeh Автор вопроса
PHP, Yii2, Music
Итого, пишу тем, кто столкнется с той же проблемой. Нужно просто сложить в одном месте все нужные фикстуры.
И если они нужны постоянно - просто запустить их консолью один раз:
yii fixture/load "*" (пусть это и требует кое-какую настройку)
Yii2 и codeception достаточно хитрые - перед каждым тестом они делают начало транзакции, а после каждого теста - откат (главное используйте InnoDB во всех таблицах).
Поэтому фикстуры оказываются глобально доступны для всех методов и в неизменном виде для каждого теста.
Удобно, но случилось так, что этот момент как-то оказался мне достаточно нечетко описанным, а на сайте - еще и с устаревшей документацией. Ну что поделаешь, особенности Open Source. Иногда приходится это изучать и копаться самому.

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

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

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