iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0

文章同步於blog

前言

改造MVC的最後一個章節,單元測試
今天會來說說如何測試實作
今天會示範Laravel

實作

延續昨天的案例,假設我今天有一個註冊會員的Validator需要做驗證
這個function用於驗證帶入的參數分別為member_name、member_email、member_password
規則如下皆為必填、字串
name最長60最短為1
email最長255、要符合email格式並且為唯一值
password只要長度小於255就好
回傳array裡面包含失敗的參數名稱,若驗證成功則為空array

假設我的Validator長這樣

public function validatorRequestData(array $request_data): array
{
    $validator = $request->validate([
        'member_name' => 'required|string|min:1|max:60',
        'member_email' => 'required|string|email|max:255|unique:members',
        'member_password' => 'required|string|max:255',
    ]);
    
    return $validator->errors();
}

那我的單元測試會這樣撰寫
先假設我已經寫好Seeder,我目前用好一筆假資料,email已經有人使用123@gmail.com

public function testValidatorRequestData()
{
    $validator = new SomeValidator();
        
    $data_1 = [
        'member_name' => 'Unit testing',
        'member_email' => 'Unittesting@email.com',
        'member_password' => 'Unittesting',
    ];
        
    $data_2 = [
        'member_name' => '',
        'member_email' => '0a',
        'member_password' => '1',
    ];
        
    $data_3 = 
        'member_name' => [],
        'member_email' => '123@gmail.com',
        'member_password' => str_pad('', 256, "a");,
    ];
        
    $err_key_group_1 = $validator->validatorRequestData($data_1);
    $err_key_group_2 = $validator->validatorRequestData($data_1);
    $err_key_group_3 = $validator->validatorRequestData($data_1);
        
    $this->assertEquals($err_key_group_1, []);
    $this->assertEquals($err_key_group_2, ['member_email', 'member_password']);
    $this->assertEquals($err_key_group_3, ['member_name', 'member_email', 'member_password']);
}

這樣就寫好單元測試了,這就可以驗證我的function是否有按照我要的樣子輸出

結語

這幾天都是在講一些核心概念跟簡單的實作,明天接著講DI
最後幾天就來說說開發模式吧


上一篇
【Day-24】改造MVC - Controller(實作篇)
下一篇
【Day-26】淺談DI - 可以嘗試不在function裡面建立物件
系列文
軟體開發 - 程式不是會跑就好30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言