В настоящее время я пишу модульные тесты для API, написанного на PHP. Этот API реализует шаг RateLimiting перед каждым запросом, и я хочу избежать этого шага, пока я тестирую приложение.
Теперь, если я хочу запустить тесты локально, я просто должен проверить локальный IP-адрес, который является «:: 1». Но у меня проблемы с доступом к переменным среды, которые предоставляет мой сервер непрерывной интеграции (я использую wercker).
Если я запускаю это из теста PHPUnit:
var_export(isset($_SERVER["CI"]) || isset($_SERVER["wercker"]));
я получил true
, но если я делаю что-то подобное, прежде чем применять ограничение скорости:
if (isset($_SERVER["CI"]) || $request->getIp() === "::1") {
return;
} else {//...
тесты Веркера продолжают терпеть неудачу, потому что он никогда не пропускает логику ограничения скорости. Обратите внимание, что первый фрагмент кода запускается из теста в PHPUnit, а второй является частью серверного приложения.
Что я делаю не так с переменными среды?
Пожалуйста, дайте мне знать, если я должен предоставить дополнительную информацию или документацию.
Я смог заставить его работать с помощью PHP getenv
функция
if (getenv("CI") || $request->getIp() === "::1") {
return;
} else {//...
Чтобы отобразить все переменные среды на сервере Wercker, добавьте этот шаг (например, в разделе сборки):
build:
steps:
- script:
name: show env vars
code: env