In meiner phpunit habe ich diese Konfiguration:
<php>
<env name="ENVIRONMENT" value="test"/>
</php>
Ich habe unter der falschen Annahme gearbeitet, dass es die Umgebungsvariable immer auf den Wert setzen würde test
. Wenn das System jedoch bereits über den Variablensatz verfügt, bevorzugt es den bereits vorhandenen Wert.
$ export ENVIRONMENT=GNARF
$ phpunit -c test/phpunit.xml
Also innerhalb der Tests der Wert von env('ENVIRONMENT')
wird sein "GNARF"
obwohl ich erwartet hatte "test"
.
Gibt es eine Möglichkeit, phpunit dazu zu bringen, die env
Einstellung nicht als Standard, sondern als den endgültigen Wert, den es verwenden sollte?
Ich möchte auch vermeiden, phpunit auf eine bestimmte Weise aufzurufen, nur um die richtigen env-Variablen zu erhalten.
Also während das funktioniert:
ENVIRONMENT="test";./vendor/bin/phpunit -c tests/phpunit.xml
Ich konfiguriere es lieber innerhalb der phpunit.xml
Datei wenn möglich.
Dieser Weg hat bei mir funktioniert (getestet mit PHPUnit 6.5):
<phpunit bootstrap="vendor/autoload.php">
<testsuites>
<testsuite name="MyProject">
<directory>tests</directory>
</testsuite>
</testsuites>
<php>
<env name="API_KEY" value="fakeApiKey" force="true" />
</php>
</phpunit>
Hier ist die Pull-Anfrage wo sie diese neue Funktion hinzugefügt haben (falls Sie interessiert sind).
Sebastianbergmann hat dies am 4. Juli 2017 zum Meilenstein PHPUnit 6.3 hinzugefügt
Die Umgebungsvariablen werden gesetzt PHPUnit_Util_Configuration::handlePHPConfiguration()
und tatsächlich sieht es so aus:
foreach ($configuration['env'] as $name => $value) {
if (false === getenv($name)) {
putenv("{$name}={$value}");
}
if (!isset($_ENV[$name])) {
$_ENV[$name] = $value;
}
}
Wie es scheint, gibt es keine Möglichkeit, diese Prüfung zu umgehen, ohne zuerst die Variable zu deaktivieren. Und wenn Sie schon dabei sind, können Sie ihn auch gleich auf den gewünschten Wert setzen.
Sie können die einstellen env
vars von der bootstrap
Datei. Die Bootstrap-Datei kann aus der ausgewählt werden phpunit.xml
Datei, damit das Ergebnis das ist, wonach Sie suchen.
Der Wert wird auch ignoriert, wenn die Tests mit PhpStorm ausgeführt werden. (Getestet mit PHP 5.6.24 und PHPUnit 5.7.0)
– Scheitel
21. September 2018 um 14:41 Uhr