Codeception не удаляются данные из базы по завершению теста.

Всё про тестирование в Yii 2.0
Ответить
BudVic
Сообщения: 5
Зарегистрирован: 2018.04.12, 10:53

Codeception не удаляются данные из базы по завершению теста.

Сообщение BudVic » 2019.03.14, 12:03

Для генерации определенных условий перед выполнением теста закидываю в базу данных необходимые данные, используя метод $I->haveInDataBase. При использовании одной базы данных всё проходит успешно, Метод добавляет данные перед началом теста, и затирает по его окончанию.

Но у меня появилась необходимость занести данные в две базы.
Делаю я это таким образом:

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

$I->haveInDatabase('user_account', $user['user_account']);
$I->haveInDatabase('analytics_user', $user['analytics_user']);

$I->amConnectedToDatabase('bvi-mt4real');
$I->haveInDatabase('mt4_users', $user['mt4_users']);
Данные успешно вносятся в обе базы, тест выполняется, но по его окончанию данные которые вносились в базу методом $I->haveInDataBase, затираются только из последней базы к которой я подключился.

Подскажите люди добрые как решить данную проблему. Знаю что можно после каждого теста загружать дамп с чистой базой, но проект очень большой, соответственно много баз и таблиц, каждый раз грузить дамп не хотелось бы, сильно замедлит процесс тестирования.

BudVic
Сообщения: 5
Зарегистрирован: 2018.04.12, 10:53

Re: Codeception не удаляются данные из базы по завершению теста.

Сообщение BudVic » 2019.03.15, 10:21

Решение оказалось очень простым. Дело в том что при первом использовании метода haveInDataBase я полагался на дефолтное подключение к базе данных, которое прописано в конфиге (тоесть я подключился к бд ещё перед выполнением теста). Когда я использую только дефолтное подключение, метод haveInDataBase отрабатывает как и положено, но если в тесте я подключаюсь к другой базе данных, то именно в дефолтном подключении вышеназванный метод не затирает данные по окончанию теста. Для того чтобы он отработал как положено, используя несколько баз данных в одном тесте, ко всем базам данных надо прописывать подключение методом amConnectedToDatabase. Может кому-то будет полезно.

Ответить