Codeception: заставить PhpBrowser использовать пользовательскую среду - PullRequest
0 голосов
/ 28 апреля 2020

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

Я подготовил FAKE_API для тестирования. И REAL_API, и FAKE_API находятся в служебном контейнере. FAKE_API имеет приоритет, если для среды установлено значение test (файл .env.test). Контроллер получает объект API посредством внедрения зависимости (аргумент конструктора).

Когда я тестирую с использованием PhpBrowser из Codeception, среда самого теста устанавливается на test - это можно проверить с помощью var_dump($_ENV['APP_ENV']) из теста.

Однако (и это проблема), если я добавлю var_dump($_ENV['APP_ENV']) к коду контроллера и выполню тот же тест, я вижу, что контроллер фактически использует обычную среду 'dev' (установлена ​​в .env файл). Это означает, что вместо моего FAKE_API.

используется REAL API. Как я могу заставить тесты PhpBrowser использовать мой .env.test? Это вообще возможно?

1 Ответ

0 голосов
/ 29 апреля 2020

Вы не можете сделать это.

PhpBrowser связывается с тестируемой системой через HTTP, поэтому он не может устанавливать переменные окружения системы.

Ваши параметры:

  • Развертывание API в тестовой конфигурации
  • Передайте среду, используя параметры или заголовки GET или POST, и сделайте так, чтобы код вашего приложения принял его. (это плохая идея)
...