스프링 컨테이너와 DB까지 연결한 통합 테스트를 진행해보자.
🌱 회원 서비스 스프링 통합 테스트
@SpringBootTest
@Transactional
public class MemberServiceIntegrationTest {
@Autowired MemberService memberService;
@Autowired MemberRepository memberRepository;
@Test
public void 회원가입() throws Exception {
// Given
Member member = new Member();
member.setName("hello");
// When
Long saveId = memberService.join(member);
// Then
Member findMember = memberRepository.findById(saveId).get();
Assertions.assertEquals(member.getName(), findMember.getName());
}
@Test
public void 중복_회원_에외() throws Exception {
// Given
Member member1 = new Member();
member1.setName("spring");
Member member2 = new Member();
member2.setName("spring");
// When
memberService.join(member1);
IllegalStateException e = Assertions.assertThrows(IllegalStateException.class,
() -> memberService.join(member2)); // 예외가 발생해야 한다.
org.assertj.core.api.Assertions.assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
}
}
이렇게 한 뒤 진행하면 다음과 같은 에러가 나타날 것이다.
이미 DB에 동일한 데이터가 있기 때문이다.
다음 쿼리문을 DB에서 실행하면 에러가 나지 않을 것이다.
DELETE FROM MEMBER;