[РЕШЕНО]Codeception как настроить тесты на другую БД?

Всё про тестирование в Yii 2.0
Ответить
Stasgar
Сообщения: 77
Зарегистрирован: 2016.07.15, 14:08

[РЕШЕНО]Codeception как настроить тесты на другую БД?

Сообщение Stasgar »

В codeception.yml имею:

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

modules:
    config:
        Db:
            dsn: 'mysql:host=localhost;dbname=database-tests'
            user: 'root'
            password: ''
            dump: /codeception/_data/dump.sql
В acceptance.suite.yml подключен модуль Db. Теперь при тесте регистрации в основной БД('database') появляется новый пользователь, а по 'database-test' просто отрабатывается дамп, как перенаправить тесты на database-test? Или при тестировании нужно менять в конфиге приложения базу?
Последний раз редактировалось Stasgar 2016.08.13, 20:27, всего редактировалось 1 раз.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Codeception как настроить тесты на другую БД?

Сообщение ElisDN »

Настроить на database-test в codeception/config/config.php.
Stasgar
Сообщения: 77
Зарегистрирован: 2016.07.15, 14:08

Re: Codeception как настроить тесты на другую БД?

Сообщение Stasgar »

ElisDN писал(а):Настроить на database-test в codeception/config/config.php.
Забыл в посте указать, в этом конфиге у меня так-же прописана тестовая база.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Codeception как настроить тесты на другую БД?

Сообщение ElisDN »

Значит приёмочные тесты не обращаются к /index-test.php
Stasgar
Сообщения: 77
Зарегистрирован: 2016.07.15, 14:08

Re: Codeception как настроить тесты на другую БД?

Сообщение Stasgar »

ElisDN писал(а): к /index-test.php
Понятно. Тогда появляется другой вопрос.

В действии signup контроллера site есть редирект(при успешной регистрации) "return $this->goHome();".
В тесте у меня прописано так:

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

$I = new AcceptanceTester($scenario);
$I->wantTo('check if signup is working');


$I->amOnPage(Yii::$app->urlManager->createUrl(['site/signup']));
$I->see('Регистрация','h1');

$I->fillField('Signup[userName]','username');
$I->fillField('Signup[userPassword]','qwerty');
$I->fillField('Signup[repeatPassword]','qwerty');
$I->fillField('Signup[userEmail]','[email protected]');

$I->click('Регистрация','button');

$I->seeCurrentUrlEquals(Yii::$app->urlManager->createUrl(['site/index']));
$I->see('Добро пожаловать!');

Но таким образом тест не проходит, т.к. видимо технически он не переходит на редирект и останавливается на 'seeCurrentUrlEquals'.

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

Couldn't see current url equals "/index-test.php?r=site%2Findex":
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'/index-test.php?r=site%2Findex'
+'/index-test.php?r=site%2Fsignup'

Каким образом можно тогда данную проблему решить?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Codeception как настроить тесты на другую БД?

Сообщение ElisDN »

Stasgar писал(а):Каким образом можно тогда данную проблему решить?
Посмотреть код страниц в папке _output.
Stasgar
Сообщения: 77
Зарегистрирован: 2016.07.15, 14:08

Re: Codeception как настроить тесты на другую БД?

Сообщение Stasgar »

В общем порылся в ошибке, проблема оказалась вообще в другом. Т.к. у меня при регистрации новому пользователю прикреплялась роль RBAC - после удаления эта роль так и оставалась принадлежать пользователю с тем-же айди => при повторном assign и возникала ошибка, не пропускающая далее.

Спасибо за помощь)
Ответить