Yii2 Codeception расширение не сохраняет в БД

Всё про тестирование в Yii 2.0
Ответить
feodor
Сообщения: 95
Зарегистрирован: 2013.01.28, 00:02

Yii2 Codeception расширение не сохраняет в БД

Сообщение feodor »

Добрый день.
Хочу при падении приемочных тестов, записывать сообщение об ошибке в БД.

Сделал расширения Codeception для проекта на Yii2.
Не работает сохранение в БД, модуль Yii2 подключен.

Пишет
Call to a member function getDb() on null

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

class ResultLogger extends Extension
{
    private $error = '';
    
    public static $events = [
        Events::TEST_FAIL => 'testFail',
        Events::TEST_END => 'endTest',
    ];

    public function testFail(FailEvent $e)
    {
        $this->error = $e->getFail()->getMessage(); // записываю ошибку
    }

    public function endTest(TestEvent $e)
    {
        $result = new Result();
        $result->error = $this->error;
        $result->save(); // Выдает ошибку - Call to a member function getDb() on null
        
        /*
        Через методы модуля Yii2 аналогичная ошибка
        
        $this->getModule('Yii2')->haveRecord('app\models\Result', [
            'error' => $this->error, //  Выдает ошибку - Call to a member function getDb() on null
        ]);
        */
    }
}
Подскажите как это правильно сделать?
Спасибо.
feodor
Сообщения: 95
Зарегистрирован: 2013.01.28, 00:02

Re: Yii2 Codeception расширение не сохраняет в БД

Сообщение feodor »

Вообщем дело оказалось в том, что на момент события Events::TEST_END соединение с бд в модуле Yii2 уже закрывается.
Перенес логику в Events::TEST_FAIL, Events::TEST_SUCCESS стало норм.
Ответить