В Laravel можно просто задать переменные среды, специфичные для вашего тестового окружения. Просто отредактируйте свой файл %%(t)phpunit.xml%% и задайте их как записи блока %%(t)%%: %%(xml) %% Но что делать, если вам вдруг понадобилось исключить их из контроля версий? {{Cut}} == Мой пример == Я возвращаюсь к работе над ((http://pulledover.us/ PulledOver)), в основе которого используется Twilio. Я захотел написать несколько тестов для моего класса %%(t)TwilioClient%%, который напрямую подключается к API Twilio. Я использовал ((https://www.twilio.com/docs/api/rest/test-credentials тестовые учётные данные Twilio)) для отправки ложных вызовов к API и проверки его ответов. А это значит, что у меня есть SID и токен для Twilio , которые мне не нужно никому показывать, так? Я даже спросил в твиттере: > ((https://twitter.com/stauffermatt/status/661584915054522368?ref_src=twsrc%5Etfw ‎Matt Stauffer @stauffermatt)) >#geek >Что может случиться, если при работе с тестовыми учётными данными @twilio загрузить их в систему контроля версий? Не лучше было бы... Я получил несколько ответов, и один из них от CEO Twilio (!): > ((https://twitter.com/jeffiel/status/661609706515881984 Jeff Lawson @jeffiel)) > @stauffermatt @twilio Лучше их не загружать. Ведь мы можем ограничить скорость запросов к API для определённой учётной записи, а если весь мир будет использовать твою учётку... Ок, значит мне надо исключить их. Но //как//? Я поразмыслил немного, написал вопрос в наш корпоративный мессенджер Slack, и отправился спать. А проснувшись обнаружил, что мне ответил всегда находчивый ((https://twitter.com/keithdamiani Кейт Дамьяни)): используй Dotenv (который используется в Laravel для загрузки %%(t).env%%), чтобы загружать файл %%(t).env.test%% в базовом классе Laravel %%(t)TestCase%%. ФУХ. Вот как это делается: === Использование %%(t).env.test%% в Laravel === Сначала создайте файл %%(t).env.test.example%% и заполните его заготовками для необходимых вам ключей: %%(conf) TWILIO_ACCOUNT_SID=fillmein TWILIO_ACCOUNT_TOKEN=fillmein %% Далее скопируйте %%(t).env.test.example%% в %%(t).env.test%% и заполните настоящими значениями. Добавьте %%(t).env.test%%в свой файл %%(t).gitignore%%. И наконец, в метод %%createApplication()%% файла %%(t)tests/TestCase.php%% добавьте такую строку: %%$app = require __DIR__.'/../bootstrap/app.php';%%. .(alert) Недавно изменился синтаксис Dotenv, поэтому я покажу две разные версии: %% // Старый Dotenv if (file_exists(dirname(__DIR__) . '/.env.test')) { Dotenv::load(dirname(__DIR__), '.env.test'); } // Новый Dotenv if (file_exists(dirname(__DIR__) . '/.env.test')) { (new \Dotenv\Dotenv(dirname(__DIR__), '.env.test'))->load(); } %% Вот и всё! Ваши переменные среды %%(t).env.test%% теперь помещены во все запускаемые тесты, которые наследуют %%(t)TestCase%%, но эти значения безопасно хранятся вне контроля версий.