@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
  • Вопрос задан
  • 161 просмотр
Решения вопроса 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 в корне может ломать твои тесты)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы