Вопрос по Codeception\Module\Yii2

Всё про тестирование в Yii 2.0
Ответить
MuratYMT
Сообщения: 20
Зарегистрирован: 2015.03.16, 09:34

Вопрос по Codeception\Module\Yii2

Сообщение MuratYMT » 2016.12.01, 07:42

Мне кажется или действительно в методе public function Codeception\Module\Yii2::_after(\Codeception\TestInterface $test) после

Код: Выделить всё

        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()
        ]);
 }
Так вот все тесты из первого *Cest.php файла проходят нормально, а после завершения первого теста во втором *Cest.php выходит ошибка что в 3 таблице есть записи ссылающиеся на 1 таблицу.
Судя по дебагу $this->loadedFixtures никогда не очищается и при каждом новом вызове haveFixtures новая группа фикстур дописывается $this->loadedFixtures.
И получается при прохождении первого теста из второго *Cest.php в методе Yii2::_after происходит попытка очистить таблицы для первой группы фикстур, т.е. таблицы 1 и 2, а 3 таблица находится во второй группе и записи в ней пока не удаляются и выходит ошибка.

Аватара пользователя
samdark
Администратор
Сообщения: 9128
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Вопрос по Codeception\Module\Yii2

Сообщение samdark » 2016.12.01, 12:35

Возможно. Закидывайте в Issue: https://github.com/Codeception/Codeception/

MuratYMT
Сообщения: 20
Зарегистрирован: 2015.03.16, 09:34

Re: Вопрос по Codeception\Module\Yii2

Сообщение MuratYMT » 2016.12.01, 12:55

Закинул как смог. Первый раз это делаю :)

Ответить