Как загружать Global fixtures в Codeception + Yii2?
Как я понимаю, раньше там были другие механизмы, поэтому в интернете куча запутанной и старой документации и примеров, которые не работают толком со встроенным модулем Codeception (а не отдельным \yii\codeception как раньше).
Поэтому я уже все перепробовал, рылся в документации, в исходном коде, но так и не понял: как мне загружать определенные fixtures не при исполнении каждого теста, а только один раз в файле-группе тестов?
А также: можно ли как-то удалять определенную ненужную информацию с базы данных с unit TestCase, то есть, какой-то метод, который сработает в конце группы тестов? Как это делать более правильным путем?
Хочу становится лучше и начать писать тесты, но эта фрагментированная документация уже все нервы съела...
Как я понял, есть еще класс InitDbFixture, но вообще непонятно, что с ним делать - как загружать...
Там вроде бы есть какой-то файл tests/fixtures/initdb.php, но о его синтаксисе я не нашел ни слова.
Возможно также, это нужно подгружать с помощью yii fixture/load - но как это автоматизировать и не делать каждый раз при проведении тестов?
Итого, пишу тем, кто столкнется с той же проблемой. Нужно просто сложить в одном месте все нужные фикстуры.
И если они нужны постоянно - просто запустить их консолью один раз:
yii fixture/load "*" (пусть это и требует кое-какую настройку)
Yii2 и codeception достаточно хитрые - перед каждым тестом они делают начало транзакции, а после каждого теста - откат (главное используйте InnoDB во всех таблицах).
Поэтому фикстуры оказываются глобально доступны для всех методов и в неизменном виде для каждого теста.
Удобно, но случилось так, что этот момент как-то оказался мне достаточно нечетко описанным, а на сайте - еще и с устаревшей документацией. Ну что поделаешь, особенности Open Source. Иногда приходится это изучать и копаться самому.
Да и в принципе, все нужные данные в документации были, просто именно момент с транзакциями и неизменностью кода я как-то упустил или не понял.