2016-11-29 2 views
0

В моем .env файл проекта Laravel 5.1 я поставил APP_ENV местным, но когда я запустить тест из терминала в сPHPUnit переопределение переменной в .env

vendor/bin/phpunit 

отладку и умереть

dd(env(APP_ENV)); 

дает мне «тестирование».

У меня есть DonT хорошего исследования по этому вопросу, пытался использовать следующие способы -

  • пытается установить APP_ENV = локальная конвейерный поставщик/бен/PHPUnit образует консоль.
  • Попытка добавить переменную ENV в файле phpunit.xml <env name="APP_ENV" value="local" override="true"> (кажется, доцент переопределения, хотя)
  • добавление файла .env.testing и установка APP_ENV = локальная
  • в файле testCase.php, где приложение автозагрузки $app->loadEnvironmentFrom('.env.testing');

Ни один из вышеперечисленных методов не дает мне ожидаемого результата, а каждый раз, когда я запускаю тест, APP_ENV запускает как «тестирование».

Невозможно отслеживать, где phpunit задает эту переменную. Помощь Pls!

+0

Обычно вы не хотите, чтобы env был локальным, когда вы _testing_ с phpunit. Вы хотите иметь возможность различать между тестированием и локальным, чтобы вы могли использовать макетные классы для таких вещей, как вызовы БД и т. Д. –

+0

Дело в том, что я использую сервер интеграции, который запускает тест с использованием phpunit, а конфигурация DB там разная, Из-за этого мне нужно использовать переменную env, чтобы быть разными в локальной машине-разработчике и в среде envirironment сервера интеграции. Но я не знаю, как это как-то переопределяет все и устанавливает APP_ENV для «тестирования» всегда –

ответ

-1

В поставщике/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php поиск putenv ('APP_ENV = тестирование'); попробуйте изменить это на локальный. Это должно сработать для вас, хотя это нецелесообразно.

+0

, что мешает базовой архитектуре, это нехорошо. Скорее я думаю, что плохо пытаюсь переопределить черту, которая написана в env для каждого экземпляра. В любом случае благодарим за ввод –