web-dev-qa-db-fra.com

Laravel 5.8 Le fichier .env.testing ne fonctionne pas

J'ai créé un fichier .env.testing avec mes informations d'identification, tout comme le .env à part un nom de table différent pour la base de données.

J'ai essayé php artisan config:clear qui supprime le fichier de configuration mis en cache dans bootstrap/cache/config.php et il a interrompu la connexion à la base de données. Si je remets le fichier en cache en exécutant php artisan config:cache le fichier mis en cache est de retour, mais sans les informations d'identification dans le fichier .env.testing. Lorsque je réexécute PHPUnit, il se connecte à la mauvaise base de données, le nom de la base de données qui est stocké dans .env et non .env.testing.

Est ce réel? Les derniers environnements de test de rupture de Laravel) ont-ils été validés?

Voici ce que les documents lisent: (trouvé ici: https://laravel.com/docs/5.8/testing )

"Vous êtes libre de définir d'autres valeurs de configuration d'environnement de test si nécessaire. Les variables d'environnement de test peuvent être configurées dans le fichier phpunit.xml, mais assurez-vous d'effacer votre cache de configuration à l'aide de la commande config: clear Artisan avant d'exécuter vos tests!

Vous pouvez également créer un fichier .env.testing à la racine de votre projet. Ce fichier remplacera le fichier .env lors de l'exécution de tests PHPUnit ou de l'exécution de commandes Artisan avec l'option --env = testing. "

[~ # ~] mise à jour [~ # ~]

J'ai finalement pu remplacer la base de données indiquée dans le .env en ajoutant la substitution de base de données dans le fichier phpunit.xml; le test .env ne fonctionne toujours pas. Les documents sont trompeurs au moins.

11
zeros-and-ones

J'avais ce même problème avec Laravel v5.6. J'ai configuré un .env.testing fichier avec un nom d'utilisateur, un mot de passe et une base de données différents, mais mes tests s'exécutaient toujours dans le principal .env base de données.

Il semble que vous deviez spécifier l'environnement de test lors de l'exécution de la commande config cache. Après avoir exécuté cette commande, cela a fonctionné comme décrit dans la documentation:

php artisan config:cache --env=testing
9
rachelderp

Afin d'exécuter . Env.testing dans les exécutions de test uniquement et d'exécuter . Env dans le comportement par défaut. Vous devrez exécuter:

./vendor/bin/phpunit.bat // For windows
./vendor/bin/phpunit // For Linux

Bonne chance

0

Si vous utilisez probablement phpstorm, alors,

allez dans les paramètres de votre phpstorm ou appuyez sur Ctrl + Alt + S.

puis sélectionnez Langues & Frameworks -> PHP -> Test Frameworks Sous l'onglet Test Runner, cliquez sur Fichier de configuration par défaut et sélectionnez (en cliquant sur l'icône du dossier) le chemin du fichier PHPUnit.xml de votre projet.

toutes les modifications apportées au fichier xml prendront effet. Créez ensuite le fichier .env.testing, créez vos variables de configuration de base de données préférées pour le test et relancez vos tests!

0
albus_severus

Que fait votre .env.testing ressembler?

votre environnement est-il défini sur APP_ENV=testing?

Quand je fais des tests et que je n'ai pas cela et que je n'ai que les détails de ma base de données dans le fichier, cela ne fonctionne pas, mais quand je fais une copie conforme du fichier .env original et édite l'env pour tester les travaux de la mienne.

0
Michael Mano