今天要来写测试,laravel有提供测试的方法。其中分成Unit及Feature,Unit专注於功能较单一独立的程序,而Feature则是偏向整合功能型的测试。
首先,先来创建一个测试吧。
php artisan make:test UserTest
我们今天想要测试的是昨天刚写好的API,我们先以destory这个方法来实测,测的过程中,尽量保持把3A写出来!
class UserTest extends TestCase
{
use RefreshDatabase;
/**
* @test
*/
public function destorySuccess()
{
//arrange
$id = 10;
$account = "JimChien";
$password = "123Acb_";
$username = "Jim";
User::create([
'id' => $id,
'account' => $account,
'password' => Hash::make($password),
'name' => $username
]);
// act&assert
$this->deleteJson("/api/user/$id")
->assertStatus(200)
->assertJson([
'success' => 'true'
]);
}
}
这边我们先测当delete成功时回传success的情境,我们可以利用RefreshDatabase这个trait,在每次测试完就重置资料库,这样有助於之前测试用的资料不会影响下一次测试。
Route::delete('/user/{id}', [UserController::class, 'destroy']);
这个route。
3A设定好後,我们来测试看看吧。
接着我们来写delete失败的案例
/**
* @test
*/
public function destoryFailed()
{
//arrange
$id = 10;
// act&assert
$this->deleteJson("/api/user/$id")
->assertStatus(200)
->assertJson([
'success' => 'false'
]);
}
这边我们一样保持3A,跟success不一样的是这次没有先建User了,那就不会delete所以回传{'success' => 'false'}
这边我们可以使用testdox去描述我们每个function在测试的情境是什麽,只需在注解中加上@testdox,并在执行指令时加上--testdox,结果如下
OK~今天完成了一小部分的测试,明天再继续看看测试还有什麽功能吧。
<<: Day 30 - 实作 Amazon API GateWay 整合 AWS Lambda 与 Dynamodb
>>: [从0到1] C#小乳牛 练成基础程序逻辑 Day 15 - if..else if..else 条件判断
今天来谈谈修饰子(Modifier)。 修饰子我觉得可以分为三大类,第一种就是封装用的修饰子,第二种...
现在我们有了编辑便利贴页面还有编辑文字页面,该是时候好好的来思考要怎麽切换页面了!流程如下:使用者选...
我们在视讯通话中很常用的一个功能就是关闭镜头或是麦克风,今天我们将实作此功能 1. 在 index....
日志纪录是网站的一个非常重要的功能,不论是对外的使用者或是对内的管理,实际运营上一定都会遇到许许多多...
那天跟朋友聊天,我跟他说我的同学是打程序的所以薪水很高。他很不解,什麽叫做打程序的?我就说就资料探勘...