我通常做的是添加phpunit.xml:
<env name="DB_CONNECTION" value="mysql_testing"/>
然后在config/database.php 中创建mysql 连接的副本,如下所示:
'mysql_testing' => [
'driver' => 'mysql',
'host' => env('DB_TESTING_HOST', 'localhost'),
'database' => env('DB_TESTING_DATABASE', 'forge'),
'username' => env('DB_TESTING_USERNAME', 'forge'),
'password' => env('DB_TESTING_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
然后在.env 中定义测试连接设置:
#TESTING
DB_TESTING_HOST=127.0.0.1
DB_TESTING_DATABASE=test_database
DB_TESTING_USERNAME=root
DB_TESTING_PASSWORD=pass
如果您在同一台机器上/在同一目录中手动运行测试和测试应用程序,则无需在 .env 中切换任何内容
编辑
如果你有这样的情况,可能修改多个模型不是最好的方法,但如果你想使用同一个数据库而不考虑连接设置,你可以这样做:
假设您已设置环境来测试可以使用的功能:
<env name="APP_ENV" value="testing"/>
在您的phpunit.xml 文件中,您可以进入您的AppServiceProvider 类并在register 方法中执行以下操作:
if ($this->app->environment('testing')) {
$this->app['config']->set('database.connections.mysql2.database', 'yourcustom testing database');
// ...
$this->app['config']->set('database.connections.mysql15.database', 'yourcustom testing database');
}
我还没有尝试过,但它应该可以工作 - 它应该使您在运行测试时可以将所有连接设置到同一个测试数据库(或其他数据库,如果您愿意)