今天继续来写测试啦!!昨天我们测试destory方法後,今天我想写store的测试。
首先,我们先测试成功的情境。
arrange
设定想要新增的资料
act
Route::post('/user', [UserController::class, 'store']);
assert
{‘success’ => ‘true’}
/**
* @test
* @testdox 成功注册一笔资料
*/
public function storeSuccess()
{
//arrange
$id = 10;
$account = "JimChien";
$password = "123Acb_";
$username = "Jim";
// act&assert
$this->postJson("/api/user", [
'id'=>$id,
'account'=>$account,
'password'=>$password,
'username'=>$username
])
->assertStatus(200)
->assertJson([
'success' => 'true'
]);
}
再来是写帐号重复注册的案例
/**
* @test
*
*/
public function storeAccountRepeat()
{
//arrange
$id = 10;
$account = "JimChien";
$password = "123Acb_";
$username = "Jim";
User::create([
'id' => $id,
'account' => $account,
'password' => $password,
'name' => $username
]);
// act&assert
$this->postJson("/api/user", [
'id'=>$id,
'account'=>$account,
'password'=>$password,
'username'=>$username
])
->assertStatus(200)
->assertJson([
'success' => 'false',
'error'=> '帐号重复注册'
]);
}
接下来写的是密码验证的测试,这边想利用data provider去提供一系列不合格的密码去测试。
首先我们在UserTest写一个method,提供你想要测试的资料,包含你想测试的所有情境
public function invalidPasswordProvider()
{
// 密码长度不足6位
yield ["123"];
// 密码不含大写字母
yield ["123abc_"];
// 密码不含小写字母
yield ["123ABC_"];
// 密码不含数字
yield ["ABCabc_"];
// 密码不含特殊符号
yield ["ABCabcd"];
}
再利用dataProvider注解,将资料依序带入method
/**
* @test
* @dataProvider invalidPasswordProvider
*/
public function storeAccountPasseordInvalid(string $password)
{
//arrange
$id = 10;
$account = "JimChien";
$username = "Jim";
// act&assert
$this->postJson("/api/user", [
'id'=>$id,
'account'=>$account,
'password'=>$password,
'username'=>$username
])
->assertStatus(200)
->assertJson([
'success' => 'false',
'error'=> '密码需要6位数以上,并且至少包含大写字母、小写字母、数字、符号各一'
]);
}
来测试看看!
这边有看到他帮我们带入了那五笔资料,且测试成功!
>>: 自动化测试,让你上班拥有一杯咖啡的时间 | Day 17 - 如何勾选元素
前言 Laravel:Route Wildcards - iT 邦帮忙::一起帮忙解决难题,拯救 I...
#402 - Remove K Digits 连结: https://leetcode.com/p...
Model 资料层 在开发应用程序的过程里,我们通常会定义 Model 的类别用来处理资料结构或是资...
昨天我们虽然各别把 .java 跟 .class 分类到不同的资料夹, 但长久下来还是不够的,我们还...
前情提要 我们整理专案後,现在专案有更明确的模组来封装元件,不仅让 App 效能提升,也让专案更「语...