class MemberServiceTest {
MemberService memberService;
MemoryMemberRepository memberRepository;
@BeforeEach //코드 하기 전에 실행.
public void beforeEach(){
memberRepository = new MemoryMemberRepository();
memberService = new MemberService(memberRepository);
}
@AfterEach //테스트 중 한 함수가 끝날 때 마다 이거 실행.
public void afterEach(){
memberRepository.clearStore();
}
@Test
void 회원가입() { //테스트때는 한국인 기업이면 한글로도 쓴다고 함.
//given 주어진 상황
Member member = new Member();
member.setName("hello");
//when 실행했을 때, 검증
Long saveId = memberService.join(member); //동일 이름이 있을 시 예외 던짐. 아니면 제대로 memberRepository에 save 되고 id 반환
//then 결과, 검증 보통 거의 다 이렇게 됨. 모두 해당되는 건 아님. GWT
Member findedMember = memberService.findOne(saveId).get(); //.get()은 보통 테스트때에만 씀.
Assertions.assertThat(member.getName()).isEqualTo(findedMember.getName());
}
@Test
public void 중복_회원_예외(){
//given
Member member1 = new Member();
member1.setName("spring");
Member member2 = new Member();
member2.setName("spring");
//when
memberService.join(member1);
IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2)); //assertThrows는 junit 함수. 예외를 반환.
//뒤의 람다식을 실행 시, 앞쪽의 예외를 throws해야 성공. 아니면 멈춤.
Assertions.assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
// try{
// memberService.join(member2);
// fail(); //Junit의 에러 발생시키는 함수. 같은 이름이므로 예외 없이 정상적으로 작동하면 실패임.
// }catch (IllegalStateException e){
// Assertions.assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
// }
//then
}
@Test
void findMembers() {
}
@Test
void findOne() {
}
}
public class MemberService { //Ctrl + Shift + T 테스트 바로 만들기.
private final MemberRepository memberRepository;
public MemberService(MemberRepository memberRepository){
this.memberRepository = memberRepository;
}
}
기존 멤버 서비스에서 저렇게 외부에서 Repository를 넣어주는 형식으로 바꿈.
이게 DI라고 하는데 다음장에 제대로 알려준다고 함.
given 주어진 상황
when 어떻게 했을 때
then 이렇게 되야 됨.
보통 함수 안에 이 세가지 역할이 있음. 아닌 것도 있음.
참고로 assertThrows는 junit 거임.
주석처리 해둔 try catch로도 검증 가능하긴 함.
'스프링 > 0. 입문, 전체방향' 카테고리의 다른 글
12장. 스프링 빈 등록. 자바 코드로 직접 (0) | 2023.07.08 |
---|---|
11장 스프링 빈 등록. 자동 의존관계 설정 (0) | 2023.07.08 |
9장 회원관리 서비스 구현 (0) | 2023.07.07 |
8강 회원관리 예제 테스트 (0) | 2023.07.06 |
7강 회원관리 예제 (0) | 2023.07.06 |