Задать вопрос
@knowledge

Как выставить переменную окружения при acceptance тесте в codeception?

acceptance.suite.yml
actor: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: 'http://172.17.0.1:5011/'
            browser: chrome
            port: 4444
            host: chrome
        - Db:
            dsn: 'mysql:host=mysql;dbname=db_test'
            user: 'root'
            password: '1234'

Базу указываю db_test, но тесты идут через обычную базу, искал в документации, нигде не нашел, --env=test при запуске теста не дает результата, в функциональных тестах можно указать, а тут нет
  • Вопрос задан
  • 134 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Maksclub
@Maksclub
maksfedorov.ru
Ваше приложение в тестовом окружении должно подключаться к тестовой БД. Магии не существует, если приложение в своем конфиге видит дев-базу, а не тестовую — оно в нее (ожидаемо) и подключится, даже если вы оочень хотите наоборот и в тестах решили смотреть в некоторую тестовую БД.

Итого: Сделать так, чтобы приложение при запуске тестов смотрело в ту же БД, что и тестовый фреймворк

Для Symfony пара вариантов:
- сделать тестовый домен, который бы поднимался с тестовым Kernel
- поднимать приложение с переменными окружения не через имитацию окружения в .env, а через само собственно окружение (грубо говоря на http://172.17.0.1 в переменных окружения (не в файле их имитирующем .env) должны стоять верные параметры подключения
- использовать модуль Symfony с явным указанием env: test, но подойдет для функциональных тестов, а не приемочных
Ответ написан
andead
@andead
друпал девелопер, фрилансер
> Базу указываю db_test

Это база только для работы модуля Db (импорт, очистка, запросы через getModule('Db')->_getDbh()->query()). К работе сайта эти настройки отношения не имеют.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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