t.me/atinfo_chat Telegram группа по автоматизации тестирования

Не удаляются данные из базы при использовании $I->connectToDataBase

codeception
php
Теги: #<Tag:0x00007f9c50aeb048> #<Tag:0x00007f9c50aeaee0>

(Виктор) #1

Для генерации определенных условий перед выполнением теста закидываю в базу данных необходимые данные, используя метод $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']);

Данные успешно вносятся в обе базы, тест выполняется, но по его окончанию данные которые вносились в базу методом haveInDataBase, затираются только из последней базы к которой я подключился.

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


(Виктор) #2

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