Laravel 忽略测试数据库连接
Laravel ignores testing database connection
我使用 Laravel 5.3.22 并希望使用内存中的 sqlite 数据库 migrating/rolling 对我的应用程序进行单元测试,以进行每个测试 here。这是我的 database.php 配置的连接部分:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
...
],
'testing' => [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
],
这是 phpunit 环境配置:
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="DB_CONNECTION" value="testing"/>
</php>
phpunit 配置暗示 laravel 应该使用 "testing" sqlite 连接进行测试,但它不关心并继续使用主 mysql 连接。这不是一个选项,我有一个大而复杂的模式,它不能用于 mysql 的单元测试。我该如何进行?我无法模拟查询生成器,因为我需要断言它的结果。
我已经解决了这个问题,我一直在我的本地环境中使用配置缓存,它一直在阻止 Laravel 使用 phpunit 配置。 config:clear artisan 命令很有帮助。我还为我的本地环境将文件缓存驱动程序更改为数组一。
我使用 Laravel 5.3.22 并希望使用内存中的 sqlite 数据库 migrating/rolling 对我的应用程序进行单元测试,以进行每个测试 here。这是我的 database.php 配置的连接部分:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
...
],
'testing' => [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
],
这是 phpunit 环境配置:
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="DB_CONNECTION" value="testing"/>
</php>
phpunit 配置暗示 laravel 应该使用 "testing" sqlite 连接进行测试,但它不关心并继续使用主 mysql 连接。这不是一个选项,我有一个大而复杂的模式,它不能用于 mysql 的单元测试。我该如何进行?我无法模拟查询生成器,因为我需要断言它的结果。
我已经解决了这个问题,我一直在我的本地环境中使用配置缓存,它一直在阻止 Laravel 使用 phpunit 配置。 config:clear artisan 命令很有帮助。我还为我的本地环境将文件缓存驱动程序更改为数组一。