먼저 show 메서드를 테스트하겠습니다.
TaskTest 파일에 메서드를 추가합니다.
public function test_tasks_show()
{
$task = Task::factory()->create();
$response = $this->get('/api/tasks/'.$task->id, $task->toArray());
$response->assertStatus(200);
}
라우터 및 컨트롤러를 설정합니다
라우터
Route::get('/tasks/{task}', [TaskController::class, 'show'])->name('tasks.show');
컨트롤러
public function show($id)
{
$task = Task::where('id', $id)->first();
return response()->json($task, 200);
}
테스트 하면 에러 없이 잘 작동합니다.
다음은 update입니다.
TaskTest
public function test_tasks_update()
{
$task = Task::factory()->create();
$response = $this->put('/api/tasks/'.$task->id, $task->toArray());
$response->assertStatus(200);
}
수정이기 때문에 put으로 해야합니다.
라우트
Route::put('/tasks/{task}', [TaskController::class, 'update'])->name('tasks.update');
컨트롤러
public function update(Request $request, $id)
{
$task = Task::where('id', $id)->first();
$task->title = $request->title;
$task->story = $request->story;
$task->save();
return response()->json($task, 200);
}
테스트 결과
마지막으로 destroy입니다.
TaskTest
public function test_tasks_destroy()
{
$task = Task::factory()->create();
$response = $this->delete('/api/tasks/'.$task->id);
$response->assertStatus(204);
}
라우트
Route::delete('/tasks/{task}', [TaskController::class, 'destroy'])->name('destroy');
컨트롤러
public function destroy($id)
{
$task = Task::where('id', $id)->first();
$task->delete();
return response()->json(null, 204);
}
테스트 결과
마지막 포스트는 포스트맨으로 TaskController가 제대로 작동하는지 확인해보겠습니다.
'IT > PHP' 카테고리의 다른 글
Laravel + vue : API(1) (0) | 2021.01.19 |
---|---|
Laravel - TDD(4) (0) | 2021.01.13 |
Laravel -TDD(2) (0) | 2021.01.13 |
Laravel - TDD(1) (0) | 2021.01.13 |
Laravel 8 - CRUD(9) (0) | 2021.01.08 |
댓글