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

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

데보션
데보션
2024년 9월 6일

두줄요약

TypeORM에서 트랜잭션 기반 테스트 격리 시 세션이 달라지는 문제를 분석했습니다. 하나의 세션을 고정하기 위해 QueryRunner와 Repository 주입 방식을 사용했습니다.

핵심 내용

  • TypeORM 환경에서 트랜잭션으로 테스트를 격리하려 했지만, 테스트마다 서로 다른 세션이 사용되어 데이터가 보이지 않는 문제 발생
  • 격리수준을 낮추는 방식은 읽기 문제를 일부 완화해도 데드락과 의도치 않은 커밋 문제를 남김
  • 하나의 세션을 테스트 전체에 고정하는 방식으로 접근 방향 전환
  • DataSource와 QueryRunner, Repository 생성 시 queryRunner 주입을 통해 동일 세션과 롤백 가능한 테스트 환경 구성

다음 읽기

#transaction 주제를 다룬 다른 회사 글

실무에서 만나는 DB isolation level

MySQL 기본 격리 수준인 REPEATABLE READ 때문에 결제 트랜잭션에서 오래된 잔액이 유지되는 문제를 겪었습니다. 락 위치와 격리 수준을 조정해 동시성 이슈를 해결하는 과정을 정리했습니다.

네이버 페이
네이버 페이
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...