测试:快速入门

简介

Laravel 天生就有测试的基因。实际上,默认就支持使用 PHPUnit 进行测试,并为应用设置了 phpunit.xml 文件。框架还自带了方便的辅助方法,允许您直观地测试应用。

默认情况下,应用的 tests 目录包含两个目录:FeatureUnit。单元测试针对非常少、相对独立的代码进行测试。实际上,大多数单元测试只针对单个方法。功能测试会测试大部分代码,包括多个对象间的相互作用,或者甚至是对 JSON 接口的完整 HTTP 请求。

FeatureUnit 测试目录中都提供了 ExampleTest.php 文件。安装新的 Laravel 应用后,在命令行中运行 phpunit 就可以运行测试。

环境

通过 phpunit 运行测试时,Laravel 会根据 phpunit.xml 文件中定义的环境变量自动将环境设置为 testing。Laravel 还会在测试时自动将会话和缓存驱动配置为 array,意味着测试时不会持久化会话或缓存数据。

可以根据需要自由定义其它测试环境配置值。testing 环境变量可以在 phpunit.xml 文件中配置,但是在运行测试前确保使用 Artisan 命令 config:clear 清除配置缓存!

此外,还可以在项目根目录创建一个 .env.testing 文件。当运行 PHPUnit 测试或带 --env=testing 选项执行 Artisan 命令时,此文件会覆盖 .env 文件中的变量。

创建 & 运行测试

要创建一个新的测试用例,可以使用 Artisan 命令 make:test

// 在 Feature 目录中创建测试
php artisan make:test UserTest

// 在 Unit 目录中创建测试
php artisan make:test UserTest --unit

生成测试后,就可以像平常使用 PHPUnit 一样定义测试方法。要运行测试,可以在终端中执行 phpunit 命令:

namespace Tests\Unit;

use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;

class ExampleTest extends TestCase
{
    /**
     * 一个基本的测试示例
     *
     * @return void
     */
    public function testBasicTest()
    {
        $this->assertTrue(true);
    }
}

如果要在测试类中定义自己的 setUp 方法,确保调用 parent::setUp()