Laravel v5.5.14
PHPUnit v6.4.1
我有一个带有许多功能测试的Laravel应用程序。我的基础TestCase
使用RefreshDatabase
特征在每次测试之前触发数据库刷新,而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
数据库连接并在内存中使用sqlite运行测试。尽管有这些设置(并清除缓存的配置等),数据库刷新仍会刷新mysql
连接数据库。
我已查看了RefreshDatabase
中的功能并调试了refreshDatabase
方法,该方法已经过去了;
$this->usingInMemoryDatabase()
? $this->refreshInMemoryDatabase()
: $this->refreshTestDatabase();
usingInMemoryDatabase
总是返回false。查看该方法的内容,从DB_CONNECTION
检索config
时,它始终返回mysql
,即使它应该被上面的env变量覆盖。
这里发生了什么?