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

Почему не срабатывает эта конструкция в Codeception?

у меня приложение запускается через файл index.php, который имеет такой вид

$container = new Container();
$app = new Application($container);
$app->run

В контейнере находятся конфиги, в том числе подключение к базе данных
Для тестирования у меня своя база данных и запускается тестовая среда, когда я передаю в контейнер строку test
$container = new Container('test');

Ломал голову как мне подключить тестовую среду в Codeception и решил использовать такой лайфхак, в index.php прописал

$env = $_GET['env'] ?? '';
Соответственно когда я запускаю сайт так mysite.ru/?env=test
запускаются тестовые настройки

Далее пишу в настройках codeception
PhpBrowser:
url: mysite.ru/?env=test

Но он все равно запускает стандартные настройки, как будто просто игнорит строку ?env=test

как это можно решить, как вы решаете проблему замены конфига на тестовый?
я не использую фреймворки
  • Вопрос задан
  • 185 просмотров
Подписаться 3 Простой Комментировать
Решения вопроса 1
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
?env=test
Могу предположить, что далее в самих тестах вы не подставляете этот GET параметр,
например при таких вызовах теряется ваш url:
<?php
$I->amOnPage('/quickstart'); // moves to http://codeception.com/quickstart
?>

Но нужно тестить...

У настройки модуля PhpBrowser есть Guzzle middlewear и Curl, попробуйте через них добавлять ко всем вашим вызовам GET параметр
https://codeception.com/docs/modules/PhpBrowser

upd:
Поискал в исходниках, там код задокументирован неплохо (лучше, чем дока)
Вот что нашел — можно использовать поля настройки для Guzzle (в доке используют auth) напрмиер query
https://github.com/Codeception/Codeception/blob/2....

Вот пример использования:
https://github.com/Codeception/Codeception/blob/2....

Я так понимаю прямо в вашем конфиге после url: mysite.ru нужно добавить query: ['env', 'test']
В итоге ваш конфиг будет примерно так выглядеть:
modules:
   enabled:
       - PhpBrowser:
           url: 'http://localhost'
           query: ['env', 'test']

Боюсь не правильно массив задал, можно попробовать, :
query: 
     env: test
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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