在Laravel 4中,我可以通过config/testing/database file
指定测试数据库。
当然,这个文件已从Laravel 5中移除,只是为了让事情变得毫无意义。
那么,我如何在Laravel 5中设置MySQL测试数据库。
我不想使用SQLite数据库。
我会建议一些代码但是SO或Google上没有任何代码可以尝试回答这个问题。
谢谢。
答案 0 :(得分:1)
如果查看文档Testing - Test Environment,则提及您在phpunit.xml中设置环境变量
例如,您可以添加
<phpunit>
<php>
<env name="DB_CONNECTION" value="sqlite"/>
</php>
</phpunit>
设置DB_CONNECTION
我知道你说你不想使用SQLite,但这只是一个例子,你可以设置你通常在.env
文件中设置的任何值。
有关使用PHPUnit使用环境变量的更多详细信息,请参阅Using Environment Variables to Add Flexibility to PHPUnit Tests。
答案 1 :(得分:0)
您可以采用以下方法:
将您的默认数据库连接设置为&#39; testing&#39;当应用程序环境也“测试”时在您的database.php文件中:
'default' => app()->environment() == "testing" ?
env('DB_CONNECTION_TESTING', 'testing') :
env('DB_CONNECTION', 'mysql'),
然后还在您的database.php文件中添加测试连接:
'testing' => [
'driver' => 'mysql',
'host' => env('DB_HOST_TESTING', 'localhost'),
'database' => env('DB_DATABASE_TESTING', 'forge'),
'username' => env('DB_USERNAME_TESTING', 'forge'),
'password' => env('DB_PASSWORD_TESTING', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
在.env文件中,您必须添加相应的行:
DB_HOST_TESTING=localhost
DB_DATABASE_TESTING=database_testing
DB_USERNAME_TESTING=username_testing
DB_PASSWORD_TESTING=password_testing
因此,每次应用程序环境都在测试时(例如phpunit测试中就是这种情况),您的应用程序将使用测试数据库连接。
当然你也可以修改像Mark Davidson的答案中提到的phpunit.xml文件。