web-dev-qa-db-ja.com

Laravel 5.8 .env.testing file is not working

私は自分の資格情報を使用して.env.testingファイルを作成しましたが、データベースの別のテーブル名以外はすべて.envと同じです。

php artisan config:clearのキャッシュされた構成ファイルを削除するbootstrap/cache/config.phpを試したところ、データベース接続が切断されました。 php artisan config:cacheを実行してファイルを再キャッシュすると、キャッシュされたファイルは元に戻りますが、.env.testingファイルに資格情報がありません。 PHPUnitを再実行すると、間違ったDB(.env.testingではなく.envに格納されているDB名)に接続します。

これは本当ですか?最新のLaravelリリースブレークテスト環境でしたか?

これはドキュメントが読んだものです:(ここにあります: https://laravel.com/docs/5.8/testing

「必要に応じて他のテスト環境設定値を自由に定義できます。テスト環境変数はphpunit.xmlファイルで設定できますが、テストを実行する前にconfig:clear Artisanコマンドを使用して設定キャッシュを必ずクリアしてください!

また、プロジェクトのルートに.env.testingファイルを作成することもできます。このファイルは、PHPUnitテストの実行時、または--env = testingオプションを指定したArtisanコマンドの実行時に.envファイルを上書きします。

[〜#〜]更新[〜#〜]

Phpunit.xmlファイルにデータベースのオーバーライドを追加することで、.envに記述されているデータベースをオーバーライドすることができました。 .env.testingはまだ機能していません。ドキュメントは少なくとも誤解を招くものです。

11
zeros-and-ones

私はLaravel v5.6で同じ問題を抱えていました。.env.testingユーザー名、パスワード、データベースが異なるファイルですが、テストは常にメインで実行されていました.envデータベース。

Config cacheコマンドを実行するときにテスト環境を指定する必要があるようです。このコマンドを実行した後、それはドキュメントで説明されているように機能しました:

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

。env.testingをテスト実行でのみ実行し、デフォルトの動作で。envを実行するため。実行する必要があります:

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

幸運を

0

Phpstormを使用している可能性がある場合は、

phpstormの設定に移動するか、Ctrl + Alt + Sを押します。

次に、[言語とフレームワーク]-> [PHP]-> [テストフレームワーク]を選択します。[テストランナー]タブで、[デフォルトの構成ファイル]をクリックし、プロジェクトのPHPUnit.xmlファイルのパスを(フォルダーアイコンをクリックして)選択します。

xmlファイルのすべての変更が有効になります。次に、.env.testingファイルを作成し、テスト用の優先DB構成変数を作成して、テストを再度実行します。

0
albus_severus

あなたの.env.testingはどのように見えますか?

環境はAPP_ENV=testingに設定されていますか?

私がテストを行い、それがなく、ファイルにデータベースの詳細しか含まれていない場合は機能しませんが、元の.envファイルのカーボンコピーを作成し、環境を編集して鉱山をテストする場合は機能します。

0
Michael Mano