PHP测试第二部分(使用lumen编写单元测试)

使用lumen编写单元测试

1. 控制器

我们先写了一个简单的app控制器CalcController.php

<?php

namespace App\Http\Controllers;

class CalcController extends Controller
{

    /**
     * @todo: 简单计算
     * @author: friker
     * @date: 2019/3/15
     * @param int $a
     * @param int $b
     * @param string $oper
     * @return float|int
     * @throws
     */
    public function oper($a = 0 , $b = 0 , $oper = '+'){
        if($a ==0 && $b == 0 && $oper == '+'){
            throw new \ArgumentCountError("function params error");
        }
        $res = 0 ;
        switch ($oper) {
            case '+' :
                $res = $a + $b;
                break;
            case '-' :
                $res = $a - $b;
                break;
            case '*' :
                $res = $a * $b;
                break;
            case '/' :
                $res = $a / $b;
                break;
        }
        return $res;
    }
}

2. 编写测试用例

在文件夹/lumen/tests 中添加 CalcControllerTest.php

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/3/15
 * Time: 10:00
 */

class CalcControllerTest extends TestCase
{
    private $calc;
    public function setUp()
    {
        parent::setUp(); // TODO: Change the autogenerated stub
        $this->calc = new \App\Http\Controllers\CalcController();
    }

    public function test_oper(){
        $a= 8;
        $b = 4;
        $fact = $a / $b;
        $test = $this->calc->oper($a,$b,'/');
        $this->assertTrue(is_int($test));
        $this->assertEquals($fact,$test);
    }

    public function test_operException(){
        $this->expectException("ArgumentCountError");
        $this->expectExceptionMessage("function params error");
        $this->calc->oper();
    }
}
  1. setUp是测试用例开始前会自动自行的部分
    我们在这里引入我们的控制器类,并实例化
  1. 我们编写了两个测试函数

test_oper : assertTrue断言参数是否为true
assertEquals 断言两个参数是否相等
test_operException : expectException 设置期待的报错类型
expectExceptionMessage : 设置期待的报错信息
第二个测试函数调用时,执行顺序必须先设置expect然后执行函数

3. 执行

我们启用ConEmu
当然,你也可以直接使用黑窗口cmd, 转到项目根目录

cd f:\www\lumen\

执行

vendor\bin\phpunit

在这里插入图片描述

注意,这里执行的目录必须是lumen根目录这一级,不能转到 vendor\bin 后直接
执行 phpunit,否则会报错。

©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页