IT/PHP

Laravel - TDD(3)

Sungjun_ 2021. 1. 13. 17:41

먼저 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가 제대로 작동하는지 확인해보겠습니다.