Laravel kehrt beim Überprüfen der Umgebung immer lokal zurück, auch wenn Tests ausgeführt werden
Posted: 04 Jan 2025, 06:00
Ich habe eine Docker-basierte Laravel-App, hier ist die Docker-Compose-Datei:
Wenn ich meine Tests ausführe, z. B. docker-compose exec app ./vendor/bin/pest tests/Feature/ReturnsTest.ph, werden sie in meiner lokalen Datenbank ausgeführt ist MySQL und verwendet kein SQLite.
Ich habe Folgendes zu einem meiner Tests hinzugefügt, um zu überprüfen, in welcher Umgebung die Tests ausgeführt werden:
und es stellt sich heraus, dass es lokal zurückgibt statt zu testen.
Ich habe die PHP-Einheit nicht berührt. xml-Datei, und ich habe bereits überprüft, dass sie Teil des Containers ist (). Hier ist der Inhalt dieser Datei:
Einer der Vorschläge, die ich online gefunden habe, war, .env.testing mit den folgenden Elementen zu erstellen:
aber das hat überhaupt keinen Unterschied gemacht.
Irgendeine Idee, was ich übersehe?
Vielen Dank
Update 1
Ausgabe von Docker-Compose Exec App PHP Artisan über hinzugefügt:
Code: Select all
version: "3.9"
services:
app:
build:
context: ./
dockerfile: Dockerfile
image: dmc
container_name: dmc-app
restart: unless-stopped
working_dir: /var/www/
# load development specific .env file
env_file:
- ./.env.development
depends_on:
- db
- nginx
volumes:
- ./:/var/www/
- ./docker/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
- ./docker/php/conf.d/error_reporting.ini:/usr/local/etc/php/conf.d/error_reporting.ini
- ./images:/public/images
expose:
- "9003"
networks:
- dmc-net
nginx:
image: nginx:1.23.2-alpine
container_name: dmc-nginx
restart: unless-stopped
ports:
- "8000:80"
volumes:
- ./:/var/www
- ./docker-compose/nginx:/etc/nginx/conf.d
networks:
- dmc-net
db:
image: mysql:8.0.31
container_name: dmc-db
restart: unless-stopped
ports:
- "3307:3306"
# use the variables declared in .env file
environment:
MYSQL_HOST: ${DB_HOST}
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: abcd1234
MYSQL_USER: ${DB_USERNAME}
SERVICE_TAGS: development
SERVICE_NAME: mysql
volumes:
- ./docker-compose/mysql:/docker-entrypoint-initdb.d
- mysql-data:/var/lib/mysql
networks:
- dmc-net
networks:
dmc-net:
driver: bridge
volumes:
mysql-data:
Ich habe Folgendes zu einem meiner Tests hinzugefügt, um zu überprüfen, in welcher Umgebung die Tests ausgeführt werden:
Code: Select all
dd(App::environment());
Ich habe die PHP-Einheit nicht berührt. xml-Datei, und ich habe bereits überprüft, dass sie Teil des Containers ist (
Code: Select all
docker-compose exec app cat /var/www/phpunit.xml
Code: Select all
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true"
>
./tests/Unit
./tests/Feature
./app
Code: Select all
APP_ENV=testing
DB_CONNECTION=sqlite
DB_DATABASE=:memory:
Irgendeine Idee, was ich übersehe?
Vielen Dank
Update 1
Ausgabe von Docker-Compose Exec App PHP Artisan über hinzugefügt:
Code: Select all
docker-compose exec app php artisan about ✔ 8s
Xdebug: [Step Debug] Could not connect to debugging client. Tried: host.docker.internal:9003 (through xdebug.client_host/xdebug.client_port).
Environment ...............................................................................................
Application Name ......................................................................... DunderMifflin-be
Laravel Version .................................................................................... 9.40.1
PHP Version ........................................................................................ 8.1.12
Composer Version .................................................................................... 2.8.4
Environment ......................................................................................... local
Debug Mode ........................................................................................ ENABLED
URL ............................................................................................. localhost
Maintenance Mode ...................................................................................... OFF
Cache .....................................................................................................
Config ......................................................................................... NOT CACHED
Events ......................................................................................... NOT CACHED
Routes ......................................................................................... NOT CACHED
Views .............................................................................................. CACHED
Drivers ...................................................................................................
Broadcasting .......................................................................................... log
Cache ................................................................................................ file
Database ............................................................................................ mysql
Logs .................................................... stack / debug, info, warning, critical, emergency
Mail ................................................................................................. smtp
Queue ............................................................................................ database
Session .............................................................................................. file