@knowledge

Как настроить БД при тестировании с codeception?

Хочу сделать тест на метод, который проверяет, если ли пользователь с таким логином при регистрации.
Код метода
public function ifExistUsername(string $username)
	{
		$user = User::where('username', $username)->first();
		if ($user)
			return 'Пользователь с таким логином уже есть.';

		return;
	}


В codeception тест выглядит так:
public function testIfExistUsername()
    {
        $validator = new FormValidator();

        $username = 'user0';
        $this->assertContains($validator->ifExistUsername($username), 'Пользователь с таким логином уже есть.');
    }


В настройках codeception включил модуль Db и прописал настройки:
- Db:
            dsn: 'mysql:host=localhost;dbname=testdb'
            user: 'root'
            password: ''
            dump: 'tests/_data/dump.sql'
            populate: true
            cleanup: true


Тестовую дб создал, дамп положил, но при запуске теста codeception проверяет логин не в тестовой базе, в а основной, как можно настроить на работу именно с тестовой базой? страничку с документацией в модулю db на сайте codeception читал, там это не разъясняется

PS не использую laravel, но использую eloquent
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
hOtRush
@hOtRush
Настройки модуля Db для codeception не будут использоваться системой, которую ты тестируешь. Они нужны для того, чтобы залить дамп в пустую бд, чистить базу после каждого теста и удалять все после завершения тестов. В твоей системе должны быть свои механизмы выбора настроек бд для процесса тестирования.
Самый тру вэй наверное написать модуль для codeception как это сделано для всех основных фреймворков, в т.ч. ларавеля https://github.com/Codeception/Codeception/blob/2.... https://github.com/Codeception/Codeception/blob/2....
Ну и если используешь dot-env конфигурацию - будь осторожен. Codeception умеет подгружать настройки из всех .env файлов, лежащих рядом с codeception.yml в хаотичном порядке, и об этом очень вяло написано в доках, так что даже .env.example в корне может ломать твои тесты)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
FunCorp Москва
от 150 000 до 250 000 руб.
от 2 000 до 4 000 usd.
Duotek Москва
До 120 000 руб.
20 авг. 2018, в 21:21
30000 руб./за проект
20 авг. 2018, в 20:46
5000 руб./за проект
20 авг. 2018, в 20:38
700 руб./в час