본문 바로가기
IT/PHP

Laravel - TDD(3)

by Sungjun_ 2021. 1. 13.

먼저 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

댓글