文章同步於it邦
前言
改造MVC的最後一個章節,單元測試
今天會來說說如何測試實作
今天會示範Laravel
實作
延續昨天的案例,假設我今天有一個註冊會員的Validator需要做驗證
這個function用於驗證帶入的參數分別為member_name、member_email、member_password
規則如下皆為必填、字串
name最長60最短為1
email最長255、要符合email格式並且為唯一值
password只要長度小於255就好
回傳array裡面包含失敗的參數名稱,若驗證成功則為空array
假設我的Validator長這樣
1 2 3 4 5 6 7 8 9 10
| 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| 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
最後幾天就來說說開發模式吧