[Node.js] 트랜잭션을 활용한 테스트 격리 환경 구현하기(1/2)

[Node.js] 트랜잭션을 활용한 테스트 격리 환경 구현하기(1/2)

8
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

Node.js에서 트랜잭션을 활용한 테스트 격리 환경 구현

이 게시물은 TypeORM을 사용한 Node.js 환경에서 트랜잭션을 통한 테스트 격리성 확보 방법을 설명합니다.

테스트 격리성 전략

  • 트랜잭션 전략: 테스트 시작과 종료 시 트랜잭션 시작 및 롤백
  • 클린업 전략: 테스트 종료 후 DB 데이터를 삭제

주요 문제점과 해결책

  • TypeORM은 세션을 관리하지 않아 테스트 간 세션이 다름
  • 서로 다른 세션으로 인해 트랜잭션 내 삽입된 데이터가 읽히지 않는 문제 발생
  • READ UNCOMMITTED 격리수준 변경 시 데드락 발생
  • 하나의 세션만 사용하도록 QueryRunner를 활용해 Repository 인스턴스를 생성하여 문제 해결

기술적 상세

  • DataSource에서 createQueryRunner로 쿼리러너 생성
  • Repository에 쿼리러너 주입해 동일 세션 유지
  • 직접 트랜잭션 관리로 원치 않는 자동 커밋 방지

다음편에서는 구축된 테스트 환경을 다룰 예정입니다.