Skip to content

测试:入门

介绍

Laravel 是以测试为核心构建的。实际上,框架自带对 PHPUnit 的测试支持,并且已经为您的应用程序设置了一个 phpunit.xml 文件。框架还提供了方便的辅助方法,使您能够更具表现力地测试您的应用程序。

默认情况下,您的应用程序的 tests 目录包含两个目录: FeatureUnit 。单元测试是专注于代码中非常小的、独立部分的测试。实际上,大多数单元测试可能专注于单个方法。功能测试可能测试代码的更大部分,包括多个对象如何相互交互,甚至是对 JSON 端点的完整 HTTP 请求。

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

环境

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

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

此外,您可以在项目根目录中创建一个 .env.testing 文件。运行 PHPUnit 测试或使用 --env=testing 选项执行 Artisan 命令时,此文件将覆盖 .env 文件。

创建和运行测试

要创建新的测试用例,请使用 make:test Artisan 命令:

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

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

生成测试后,您可以像通常使用 PHPUnit 那样定义测试方法。要运行测试,请从终端执行 phpunit 命令:

<?php

namespace Tests\Unit;

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

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

如果您在测试类中定义了自己的 setUp / tearDown 方法,请确保调用父类的相应 parent::setUp() / parent::tearDown() 方法。