TIL | [Jest] save 메서드와 update 메서드의 검증

bubblegum·2024년 3월 30일
0

Today I learn(TIL)

목록 보기
43/84
post-thumbnail

두 메서드의 차이점

update: 데이터베이스에 있는 기존 레코드를 업데이트합니다. 일반적으로 주어진 조건에 따라 특정 레코드를 선택하고 그 레코드의 내용을 변경하는 데 사용됩니다. 이는 주로 WHERE 절을 사용하여 레코드를 식별하고, 해당 레코드의 필드 값을 변경하는 데에 적합합니다.

save: 새로운 데이터를 데이터베이스에 저장하거나, 이미 존재하는 데이터를 업데이트할 수 있습니다. 만약 저장하려는 데이터가 데이터베이스에 이미 존재한다면, 해당 데이터를 업데이트하고, 그렇지 않다면 새로운 데이터를 삽입합니다.

데이터베이스 ORM(Object-Relational Mapping) 라이브러리에서 update 메서드는 주로 업데이트할 레코드를 선택하는 WHERE 절과 함께 사용되며, 업데이트할 필드 값들을 지정합니다. 반면에 save 메서드는 새로운 레코드를 생성할 때나, 이미 존재하는 레코드를 업데이트할 때 사용됩니다.

두 메서드의 테스트 접근 방식

update 메서드와 save 메서드를 테스트하는 접근 방식은 일반적으로 다를 수 있습니다. 이는 메서드의 목적과 작동 방식에 따라 달라질 수 있습니다.

  1. update 메서드 테스트:
    update 메서드는 주로 기존 레코드를 업데이트하는 데 사용됩니다. 따라서 이 메서드를 테스트할 때는 다음과 같은 요소들을 확인해야 합니다:
  • 주어진 조건에 따라 올바른 레코드가 업데이트되는지 확인합니다.
  • 업데이트된 필드 값이 올바른지 확인합니다.
  • 업데이트된 레코드의 상태가 예상대로 변경되는지 확인합니다.
  1. save 메서드 테스트:
    save 메서드는 새로운 데이터를 저장하거나 이미 존재하는 데이터를 업데이트하는 데 사용됩니다. 이 메서드를 테스트할 때는 다음과 같은 요소들을 확인해야 합니다:
  • 새로운 데이터가 적절하게 저장되는지 확인합니다.
  • 이미 존재하는 데이터를 업데이트하는 경우에는 해당 데이터가 올바르게 업데이트되는지 확인합니다.
  • 데이터베이스에 저장된 결과가 예상대로인지 확인합니다.
const expectedValue: OnlineBoardComments = {
  id: paramOnlineBoardComment.commentId,
  onlineBoardId: paramOnlineBoardComment.onlineBoardId,
  content: updateOnlineBoardCommentDto.content,
  userId: 1,
  createdAt: new Date(),
  updatedAt: new Date(),
  user: null,
  onlineBoard: null,
};

jest.spyOn(repository, 'save').mockResolvedValue(expectedValue);

이렇듯 각 메서드의 목적과 작동 방식에 따라 테스트 코드가 달라질 수 있습니다. 보다 정확하고 유용한 테스트를 작성하기 위해서는 해당 메서드의 기능과 요구 사항을 이해하고, 이를 바탕으로 적절한 테스트 케이스를 작성해야 합니다.

profile
황세민

0개의 댓글

관련 채용 정보