본문 바로가기
프로그래밍/API

API CRUD 테스트 순서 및 의존 관계 관리

by 프로그래머의뇌 2024. 9. 5.

Post, Poll, PollOption의 CRUD API 테스트를 어떻게 진행해야 하는지,

특히 의존 관계가 있을 때 어떤 순서로 해야 하는지 궁금했습니다.

 

 

 

1. Post, Poll, PollOption 관계 설명:

  • Post: 게시글에 해당하는 엔티티로, 여러 개의 Poll을 가질 수 있습니다.
  • Poll: 하나의 설문조사(투표)를 나타내는 엔티티로, 하나의 Post에 속합니다. Poll은 여러 개의 PollOption을 가질 수 있습니다.
  • PollOption: 설문조사에서 선택할 수 있는 옵션을 나타내며, 하나의 Poll에 속합니다.

관계 구성:

  • Post - Poll:
    • 관계: 1(Post는 여러 Poll을 가질 수 있음)
    • Post는 여러 Poll을 포함하며, 각 Poll은 하나의 Post에 속합니다.
    • 이 관계는 Post가 부모, Poll이 자식 엔티티로 표현됩니다.
  • Poll - PollOption:
    • 관계: 1(Poll은 여러 PollOption을 가질 수 있음)
    • Poll은 여러 PollOption을 포함하며, 각 PollOption은 하나의 Poll에 속합니다.
    • 이 관계에서 Poll이 부모, PollOption이 자식 엔티티입니다.

2. API CRUD 테스트 순서

엔티티 간의 종속성(의존 관계) 때문에, 하위 엔티티를 생성하기 전에 상위 엔티티가 먼저 존재해야 합니다. 따라서 테스트는 다음 순서로 진행합니다:

2.1 순서: Post → Poll → PollOption

Step 1: Post 생성 (POST /api/posts)

Post를 생성하여 데이터베이스에 저장합니다

예시 요청:

json

{
  "title": "Sample Post Title",
  "pollId": 1,
  "fileId": 0,
  "isDeleted": false,
  "createdBy": "user1"
}



    -   -   **목적**: Post를 먼저 생성하여, 후속되는 Poll이 어느 Post에 속해야 할지 결정합니다.
    -   **Step 2: Poll 생성 (POST /api/posts/{postId}/polls)**
        -   생성된 Post의 ID를 사용하여, 해당 Post에 속하는 Poll을 생성합니다.
예시 요청:

json

{
  "title": "Sample Poll Title",
  "expiresAt": "2024-09-10T00:00:00",
  "isDeleted": false,
  "createdBy": "user1"
}



목적: Poll을 생성하여 Post에 속하는 설문조사를 관리합니다.
Step 3: PollOption 생성 (POST /api/posts/{postId}/polls/{pollId}/options)**
생성된 Poll의 ID를 사용하여, 해당 Poll에 속하는 PollOption을 생성합니다.
예시 요청:

 json

{
  "optionText": "Option 1",
  "isDeleted": false,
  "createdBy": "user1"
}




목적: 각 Poll에 대한 선택지를 생성하여, 설문조사를 완성합니다

 

2.각 단계에서의 테스트
생성 후 확인 (GET): 각 엔티티를 생성한 후, 해당 ID로 GET 요청을 하여 데이터가 올바르게 생성되었는지 확인합니다.
업데이트 (PUT): 생성된 엔티티를 업데이트하여 수정된 내용이 반영되는지 테스트합니다.
삭제 (DELETE): 엔티티를 삭제하고, 삭제된 후에는 GET 요청에서 404 Not Found가 반환되는지 확인하여 삭제가 성공적으로 이루어졌는지 검증합니다.

 

 


상위 엔티티부터 순서대로 생성하고, 각 단계에서 관련된 하위 엔티티를 연결하여 테스트합니다.
이 순서를 따름으로써, 엔티티 간의 종속성 문제를 피하고, 데이터베이스 상태를 정확하게 유지할 수 있습니다.
관계가 복잡해질수록, 테스트를 철저히 하여 각 엔티티의 CRUD 기능이 올바르게 작동하는지 검증하는 것이 중요합니다.이 구조를 이해하고 테스트를 진행하면, Post, Poll, PollOption 간의 관계와 CRUD 동작을 제대로 확인할 수 있습니다.