对 Laravel 的 Controller 做 Unit Test

更新日期: 2018-09-10 阅读次数: 3283 分类: Laravel

之前尝试过对 Laravel 的 Controller 做 Feature Test,但是在业务变得越来越复杂之后,我感觉对 controller 里的函数也没了自信,急需对功能函数做 Unit Test,以平复我不安的情绪。

例如:

新建一个 Unit Test,由于默认新建的是 feature test, 所有后面需要加上 unit 参数

php artisan make:test StaffSalaryHistoryTest --unit

此时会看到 tests/Unit 目录下多了一个文件

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        tests/Unit/StaffSalaryHistoryTest.php

测试代码

<?php

namespace Tests\Unit;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
use App\Http\Controllers\Admin\StaffSalaryHistoryCrudController;

class StaffSalaryHistoryTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function test_get_start_date_by_last_end_month()
    {
        $controller = new StaffSalaryHistoryCrudController();
        $result = $controller->get_start_date_by_last_end_month('2018-07');
        $this->assertEquals('2018-08-01', $result->format('Y-m-d'));
    }
}

执行测试

 ./vendor/bin/phpunit
PHPUnit 6.5.12 by Sebastian Bergmann and contributors.

...                                                                 3 / 3 (100%)

Time: 961 ms, Memory: 16.00MB

OK (3 tests, 3 assertions)

关于作者

我是来自山东烟台的一名开发者,喜欢瞎折腾,顺便记记笔记。有敢兴趣的话题,欢迎加微信 zhongwei 聊聊。 白天工地搬砖,晚上哄熊孩子,可能回复有点慢,见谅。 查看更多联系方式

相关文章

谈笑风生

baia

如果控制器有注入Request类,如何mock啊?

大象

这篇文章开头有个 Feature Test 的介绍链接

爱评论不评论

近期节日

2019年12月07日 大雪
2019年12月09日 "一二九"运动纪念日
2019年12月09日 世界足球日
2019年12月10日 世界人权日
2019年12月12日 西安事变纪念日
2019年12月13日 南京大屠杀
2019年12月20日 澳门回归日
2019年12月21日 国际篮球日
2019年12月22日 冬至
2019年12月24日 平安夜
2019年12月25日 圣诞节
查看更多节日