我们再回来写API的单元测试,
之前的范例只有写到回传单一值而已,
但是通常我们写的API,
会是一个Json的格式,
而且可能会有复杂的内容,
可能有固定的格式,
也可能没有。
我们接下来要实作一个API,
当我们用Post传送一个name资料过去的时候,
就要回传新增资料成功的回应。
(当然只是模拟,我们这次不会操作资料库)
我们在BrowserUnitTest.php新增一个方法
public function test_user_add_name()
{
$this->post('/api/user/add', ['name' => 'Sally'])
->seeJson([
'created' => true,
]);
}
我们预期这个Json会包含 ['created' => true]
这个内容,
然後执行测试,
当然这个测试一定会失败
php artisan test
如同我们所预期的,
测试回传了错误,
然後我们接下去写API
我们先把原来的api.php改成跟web.php一样的型式
use App\Http\Controllers\API\APIController;
Route::post('/getLeapYear/{year}', [APIController::class, 'checkLeapYear']);
然後在APIController新增一个API方法
记得要 use Validator;
function AddUser(Request $request)
{
$input = $request->all();
//验证规则
$rules = [
//名称
'name' => [
'required',
],
];
//验证资料
$validator = Validator::make($input, $rules);
$result = [];
if($validator->fails())
{
$result['created'] = false;
}
else
{
$result['name'] = $input['name'];
$result['created'] = true;
}
return json_encode($result);
}
然後在api.php新增
Route::group(['prefix' =>'user'], function(){
Route::post('/add', [APIController::class, 'AddUser']);
});
我们再执行一次测试
php artisan test
我们测试成功了!
<<: 从零开始的8-bit迷宫探险【Level 14】让主角奔跑吧!Running Sam
As a Linux Administrator, You must know the import...
Case01 Controller [HttpPost] public IActionResult ...
“在过去的几年中,我一直在使用系统档案检查器(SFC)扫描和修复损坏档案,但是昨天,当我尝试执行sf...
若看到以下画面,恭喜你,又成功了! /bin/bash: -c: line 0: syntax er...
前言 上一篇谈到领域驱动设计并不是横空出世,而是经由过去几十年的逐步演化而成的,因此,我们就来看看阿...