对 Laravel 的 Controller 做 Unit Test

更新日期: 2018-09-10 阅读次数: 818 分类: 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)

爱评论不评论

近期节日

2018年11月17日 国际大学生节
2018年11月20日 国际儿童日
2018年11月21日 世界问候日
2018年11月22日 小雪
2018年11月22日 感恩节
2018年12月01日 世界艾滋病日
2018年12月03日 国际残疾人日
2018年12月07日 大雪
2018年12月09日 "一二九"运动纪念日
2018年12月09日 世界足球日
2018年12月10日 世界人权日
2018年12月12日 西安事变纪念日
查看更多节日