Laravel5测试数据库MySQL

Laravel5测试数据库MySQL,mysql,laravel-5.1,Mysql,Laravel 5.1,在Laravel4中,我可以通过config/testing/database文件指定测试数据库 当然,这个文件已经从Laravel 5中删除,只是为了让事情变得更加困难 那么,如何在Laravel5中设置MySQL测试数据库呢 我不想使用SQLite数据库 我会推荐一些代码,但在SO上或通过Google都没有任何东西试图回答这个问题 谢谢。如果您查阅了本文提到的文档,您可以在phpunit.xml中设置环境变量 例如,你可以添加 <phpunit> <php>

在Laravel4中,我可以通过
config/testing/database文件
指定测试数据库

当然,这个文件已经从Laravel 5中删除,只是为了让事情变得更加困难

那么,如何在Laravel5中设置MySQL测试数据库呢

我不想使用SQLite数据库

我会推荐一些代码,但在SO上或通过Google都没有任何东西试图回答这个问题


谢谢。

如果您查阅了本文提到的文档,您可以在phpunit.xml中设置环境变量

例如,你可以添加

<phpunit>
    <php>
        <env name="DB_CONNECTION" value="sqlite"/>
    </php>
</phpunit>

要设置
DB\u连接
我知道您说过不想使用SQLite,但这只是一个示例,您可以设置通常在
.env
文件中设置的任何值


有关PHPUnit使用环境变量的更多详细信息,请参阅。

您可以使用以下方法:

当应用程序环境还在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测试),您的应用程序都会使用测试数据库连接

当然,您也可以修改phpunit.xml文件,如Mark Davidson的回答中所述