Der benutzerdefinierte PHPUnit-Testfall erkennt .env.testing in meinem Laravel-Projekt nicht
Posted: 20 Jan 2025, 13:35
Kontext
Ich habe ein Laravel 9 (9.52.16)-Projekt (auch auf neueren Versionen getestet) mit einem benutzerdefinierten API-Authentifizierungsablauf. Um eine Anfrage zu stellen, müssen Sie zunächst ein init_token erhalten. Dies kann durch Aufrufen des /init-Pfads mit einer store_id und einem api_token erreicht werden. Die API prüft, ob das api_token zur richtigen store_id gehört und gibt ein Init-Token zurück. Dann wird ein neues generiert, sodass es nicht wiederverwendet werden kann. Ich habe zwei Datenbanken. Eine normale und eine Testversion. Darin befindet sich eine Tabelle namens „Stores“, in der diese Datensätze gespeichert werden. Sie sind im Wesentlichen Kopien voneinander, abgesehen davon, dass die api_token-Felder unterschiedlich sind.
Alles läuft in Docker-Containern mit WSL (mit Lando zum Verwalten von Containern)
Ich habe eine separate .env.testing-Datei in meinem Projekt, um eine Verbindung zur Testdatenbank herzustellen. In phpunit 9.6.19 habe ich auch die folgenden Umgebungen in phpunit.xml festgelegt
Meine gesamte phpunit.xml sieht wie folgt aus
Für meinen speziellen Anwendungsfall habe ich eine benutzerdefinierte TestCase-Datei erstellt, die den Standard-Laravel-TestCase erweitert. Hier ist eine Minimalversion davon
Ich habe ein Laravel 9 (9.52.16)-Projekt (auch auf neueren Versionen getestet) mit einem benutzerdefinierten API-Authentifizierungsablauf. Um eine Anfrage zu stellen, müssen Sie zunächst ein init_token erhalten. Dies kann durch Aufrufen des /init-Pfads mit einer store_id und einem api_token erreicht werden. Die API prüft, ob das api_token zur richtigen store_id gehört und gibt ein Init-Token zurück. Dann wird ein neues generiert, sodass es nicht wiederverwendet werden kann. Ich habe zwei Datenbanken. Eine normale und eine Testversion. Darin befindet sich eine Tabelle namens „Stores“, in der diese Datensätze gespeichert werden. Sie sind im Wesentlichen Kopien voneinander, abgesehen davon, dass die api_token-Felder unterschiedlich sind.
Alles läuft in Docker-Containern mit WSL (mit Lando zum Verwalten von Containern)
Ich habe eine separate .env.testing-Datei in meinem Projekt, um eine Verbindung zur Testdatenbank herzustellen. In phpunit 9.6.19 habe ich auch die folgenden Umgebungen in phpunit.xml festgelegt
Code: Select all
//testing store
Code: Select all
backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
cacheResult="true"
executionOrder="depends"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
stopOnRisky="false"
cacheResultFile="tests/logs/.phpunit.result.cache"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
./app
tests/Unit/EmployeeTest.php
./tests/Feature
./tests/Integration
tests/Feature/Acc
[*]
Code: Select all