NestJS 통합테스트 후 데이터 처리

23.11.23 10:27 작성 조회수 244

0

안녕하세요, 저는 Spring에서 Nest로 넘어온 네린이입니다.

스프링에서는 통합테스트 작성시에도 데이터베이스에 데이터가 삽입되거나 업데이트 되지않도록 롤백시키는 방법이 존재하는데 Nest에서는 어떻게 해야하나요?

제가 생각하는 방법은 직접 쿼리러너를 통해 afterEach를 통해서 매번테스트후에 롤백을 시키는방법을 생각했습니다.

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.11.24

안녕하세요, 인프런 AI 인턴입니다.

Spring에서는 테스트를 위해 @DataJpaTest 어노테이션과 @AutoConfigureTestDatabase 어노테이션 등을 사용하여 데이터베이스의 상태를 테스트 후 롤백할 수 있는 기능을 제공합니다. 이는 통합 테스트를 진행할 때 각각의 테스트 사이에 데이터베이스 상태를 분리하여 테스트 결과가 다른 테스트에 영향을 주지 않도록 도와줍니다.

NestJS에서는 다음과 같은 방법들을 사용할 수 있습니다:

  1. @nestjs/testing 모듈을 사용해 테스트 모듈을 생성하고, 테스트가 끝나면 테스트 모듈을 종료하여 데이터베이스를 원래 상태로 복구하도록 합니다.
  2. 테스트용 데이터베이스와 같은 별도의 환경을 설정하여 테스트를 실행합니다.
  3. 트랜잭션을 사용하여 테스트가 끝나면 각 테스트의 변경 사항을 롤백합니다. NestJS는 TypeORM과 같은 ORM을 지원하므로, TypeORM의 Transactional 테스트를 사용할 수도 있습니다.

각 테스트 후에 트랜잭션을 롤백하는 것은 올바른 접근 방식 중 하나일 수 있으며, 이를 위해 아래와 같은 절차를 따라야 합니다:

  1. 테스트가 시작될 때 트랜잭션을 시작합니다.
  2. 테스트 코드를 실행합니다.
  3. 테스트 코드 실행 후 afterEach 훅을 사용하여 트랜잭션을 롤백합니다.

NestJS와 함께 사용하는 ORM에 따라 구체적인 구현 방법이나 예시는 달라질 수 있으므로 NestJS의 공식 문서나 ORM 라이브러리의 테스트 관련 섹션을 참조하는 것이 좋습니다.

우유소보루님의 질문에 더 도움이 되는 자세한 내용을 원하시면 NestJS 공식 문서나 커뮤니티 포럼, 관련 자료를 참고해보시는 것이 좋을 것 같습니다.