测试
简介
Laravel 在创建时就已考虑到测试的部分。事实上, Laravel 默认就支持用 PHPUnit 来做测试,并为你的应用程序创建好了 phpunit.xml 文件。框架还提供了一些便利的辅助函数,让你可以更直观的测试应用程序。
在 tests 目录中有提供一个 ExampleTest.php 的示例文件。安装新的 Laravel 应用程序之后,只需在命令行上运行 phpunit 就可以进行测试。
测试环境
在运行测试时,Laravel 会自动将环境变量设置为 testing,并将 Session 及缓存以 数组 的形式存入,也就是说在测试时不会保存任何的 Session 或缓存数据。
你可以随意创建其它必要的测试环境配置。testing 的环境变量可以在 phpunit.xml 文件中被修改。
定义并运行测试
要创建一个测试案例,可使用 make:test Artisan 命令:
php artisan make:test UserTest
此命令会放置一个新的 UserTest 类至你的 tests 目录。接着就可以像平常使用 PHPUnit 一样来定义测试方法。要运行测试只需要在命令行上运行 phpunit 命令即可:
<?php
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class UserTest extends TestCase
{
/**
* 一个基本的测试样例。
*
* @return void
*/
public function testExample()
{
$this->assertTrue(true);
}
}
注意
如果要在你的类自定义自己的 setUp 方法,请确保调用了 parent::setUp。
测试应用程序
Laravel 为 HTTP 请求的生成和发送操作、输出的检查,甚至表单的填写都提供了非常流利的 API。 举例来说,你可以看看 tests 目录中的 ExampleTest.php 文件:
<?php
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class ExampleTest extends TestCase
{
/**
* 一个基本的功能测试样例。
*
* @return void
*/
public function testBasicExample()
{
$this->visit('/')
->see('Laravel 5')
->dontSee('Rails');
}
}
visit 方法会创建一个 GET 请求,see 方法则断言在返回的响应中会有指定的文本,dontSee 方法断言在返回的响应中不会有指定的文本。这是 Laravel 所提供的最基本的应用程序测试。