@matperez

Как очистить базу после/до начала функциональных тестов?

Здравствуйте!

Тестирую самбит формы. Если все в порядке, в базе должна появляться запись. Мне важно убедиться что это новая запись, а не старая.

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

Собственно вопрос: нет ли в codeception чего-то подобное cleanDir из Filesystem Module, только что бы было cleanTable? Хочется чистить таблицу перед началом теста, но только ее. Вариант с перезаливанием чистого дампа каждый раз мне кажется излишним.
  • Вопрос задан
  • 1053 просмотра
Решения вопроса 1
@matperez Автор вопроса
Придумал делать так... :
namespace Codeception\Module;

class DbHelper extends Yii2
{
    /**
     * Clean up a database table. This will execute 'DELETE FROM <table>' query
     * @param string $table table name
     * @return bool
     */
    public function truncateTable($table)
    {
        $db = \Yii::$app->db;
        if (! $db) {
            throw new \LogicException(__CLASS__.' No connection to database.');
        }
        $query = 'DELETE FROM '.$table;
        $this->debugSection('Query', $query);
        $command = $db->createCommand($query);
        return $command->execute();
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы