laravel 之 Unit 单元测试

2022-12-29 18:12:00 浏览数 (1)

在进行项目开发的时候,经常会对我们的类,函数,http请求等进行测试,看结果是否符合我们的预期。 对于http 请求我们通常会使用postman 来进行测试。 那么如果我们需要测试某一个类,某一个方法,需要怎么办?

可能我们会这样做:在类或者方法调用后对结果进行打印,然后使用postman 去请求对应接口。

这样做有那些坏处呢:

  1. 可能会在你的代码中出现很多var_dump() 代码。
  2. 在你调用该类/方法 之前有很多步骤是你不需要的。(比如在调用之前对数据库进行了相关操作)。造成脏数据。

由于以上原因,我们想寻找一个简单并且高效的方法去对我们的类/方法进行测试,但是又苦于框架的单一入口原则。不能直接去调用对应的类。

Unit:

laravel 提供了非常优秀的测试基因:

默认情况,你的应用 tests 目录中包含两个子目录:FeatureUnit。对应功能测试和单元测试。

功能测试是针对大面积代码进行的测试,包括多个对象之间的交互,甚至是对 JSON 端点的完整 HTTP 请求。

单元测试是针对你的代码中非常少,而且相对独立的一部分代码来进行的测试(方法)。实际上,大部分单元测试都是针对单个方法进行的。

创建一个测试用例

代码语言:javascript复制
// 在 Feature 目录下创建一个测试类...
php artisan make:test UserTest

// 在 Unit 目录下创建一个测试类...
php artisan make:test UserTest --unit
代码语言:javascript复制
<?php

namespace TestsUnit;

use PHPUnitFrameworkTestCase;

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

然后我们在终端运行 phpunit命令。

mac :

./vender/bin/phpunit

win:

cd vender/bin

phpunit

如果想要执行某一个文件,需要在命令后面加文件路径 如: ./vender/bin/phpunit tests/Unit/UserTest.php

单个方法:phpunit --filter=a_test_function

单个类:phpunit --class=ExampleTest

0 人点赞