使用 phpunit 进行 Laravel 测试
Posted
技术标签:
【中文标题】使用 phpunit 进行 Laravel 测试【英文标题】:Laravel testing with phpunit 【发布时间】:2016-06-04 21:39:20 【问题描述】:我如何确保当我在 Laravel 中使用 phpunit 进行测试时,例如我想测试我的 api 路由 /test/1
它使用我的测试数据库?
我已经建立了测试连接并更改了我的 phpunit.xml 文件。我将DB_CONNECTION
更改为我创建的测试连接。
<env name="DB_CONNECTION" value="mysql_testing"/>
但是当我发出发布请求时,我会从开发数据库中收到数据?
【问题讨论】:
您是否还在 config/database.php 中设置了配置值数组? 【参考方案1】:在您的Config/database.php
文件中,mysql_testing
中的数据库的值是多少?应该是这样的:
'mysql_testing' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('TEST_DB_DATABASE', 'db_testing'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
并且数据库db_testing
必须存在。
【讨论】:
不要使用html 来格式化使用代码块(只是意图代码有4个空格...)【参考方案2】:在您的一个测试文件中,添加以下内容以输出您当前的DB_CONNECTION
:
dd(env('DB_CONNECTION'));
如果 PHPUnit.xml 设置正确,您应该在测试输出中获得 mysql_testing
。
【讨论】:
以上是关于使用 phpunit 进行 Laravel 测试的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHPUnit 在 Laravel 控制器中进行单元测试 Guzzle
Laravel 5 使用 phpUnit 进行测试而不重置我的数据库