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,否則會報錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章