文章同步於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
最後幾天就來說說開發模式吧