Laravel v5.5.14
のPHPUnitのv6.4.1Laravelテスト - 移行/さわやか間違っ環境
私は機能テストの数とLaravelアプリケーションを持っています。私のベースTestCase
は、の特性を使用して各テストの前にDBリフレッシュをトリガーし、phpunit.xml
のenv変数はそうです。
<php>
<env name="APP_ENV" value="testing"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
単独の開発mysql
DB接続のままにしてメモリにsqliteのを使用してテストを実行することを意図。これらの設定(およびキャッシュされた設定の消去など)にもかかわらず、DBリフレッシュでは接続データベースmysql
が常にリフレッシュされます。
RefreshDatabase
の機能を調べて、refreshDatabase
の方法をデバッグしました。
$this->usingInMemoryDatabase()
? $this->refreshInMemoryDatabase()
: $this->refreshTestDatabase();
usingInMemoryDatabase
は常にfalseを返します。そのメソッドの内容を見ると、をconfig
から検索すると、上記のenv変数で上書きされるはずですが、常にmysql
が返されます。
ここでは何が起こっていますか?
phpunir.xml
はたぶん設定がキャッシュされているプロジェクトを選択? '/ bootstrap/cache/config.php'があれば削除してください。 –このデータベースを '.env'ファイルに設定するとどうなりますか?おそらく 'phpunit.xml'の設定は使われていませんか?このテストを手動で実行しているのですか、JenkinsなどのCI経由で実行していますか? –
これはおそらく、あなたのシェル環境に 'DB_CONNECTION'が設定されているためです。 PHPUnitはデフォルトでこれらの変数をオーバーライドしませんが、強制的にオーバーライドすることができます。https://stackoverflow.com/a/43717277/4233593 –