私は自分の資格情報を使用して.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はまだ機能していません。ドキュメントは少なくとも誤解を招くものです。
私はLaravel v5.6で同じ問題を抱えていました。.env.testing
ユーザー名、パスワード、データベースが異なるファイルですが、テストは常にメインで実行されていました.env
データベース。
Config cacheコマンドを実行するときにテスト環境を指定する必要があるようです。このコマンドを実行した後、それはドキュメントで説明されているように機能しました:
php artisan config:cache --env=testing
。env.testingをテスト実行でのみ実行し、デフォルトの動作で。envを実行するため。実行する必要があります:
./vendor/bin/phpunit.bat // For windows
./vendor/bin/phpunit // For Linux
幸運を
Phpstormを使用している可能性がある場合は、
phpstormの設定に移動するか、Ctrl + Alt + Sを押します。
次に、[言語とフレームワーク]-> [PHP]-> [テストフレームワーク]を選択します。[テストランナー]タブで、[デフォルトの構成ファイル]をクリックし、プロジェクトのPHPUnit.xmlファイルのパスを(フォルダーアイコンをクリックして)選択します。
xmlファイルのすべての変更が有効になります。次に、.env.testingファイルを作成し、テスト用の優先DB構成変数を作成して、テストを再度実行します。
あなたの.env.testing
はどのように見えますか?
環境はAPP_ENV=testing
に設定されていますか?
私がテストを行い、それがなく、ファイルにデータベースの詳細しか含まれていない場合は機能しませんが、元の.envファイルのカーボンコピーを作成し、環境を編集して鉱山をテストする場合は機能します。