Код: Выделить всё
foreach($this->loadedFixtures as $fixture) {
$fixture->unloadFixtures();
}
Код: Выделить всё
$this->loadedFixtures = [];
2 набора acceptance тестов в 2х*Cest.php файлах подподряд.
В первом задействованы фикстуры для моделей 1 и 2 таблицы БД. Во 2 таблице есть внешний ключ на на 1.
Во втором тесте задействованы фикстуры для моделей 1 и 3 таблиц. В 3 таблице есть внешний ключ на 1 таблицу.
Фикстуры подключаются в методе _before
Код: Выделить всё
//первый *Cest.php
public function _before(AcceptanceTester $I)
{
$I->haveFixtures([
Fixture1::className(),
Fixture2::className()
]);
}
Код: Выделить всё
//второй *Cest.php
public function _before(AcceptanceTester $I)
{
$I->haveFixtures([
Fixture1::className(),
Fixture3::className()
]);
}
Судя по дебагу $this->loadedFixtures никогда не очищается и при каждом новом вызове haveFixtures новая группа фикстур дописывается $this->loadedFixtures.
И получается при прохождении первого теста из второго *Cest.php в методе Yii2::_after происходит попытка очистить таблицы для первой группы фикстур, т.е. таблицы 1 и 2, а 3 таблица находится во второй группе и записи в ней пока не удаляются и выходит ошибка.