MemberServiceIntegrationTest 파일에서
@Autowired MemberService "memberService"
@Autowired MemberRepository "memberRepository"
임의로 제가 "" 를 표시했는데,
위 내용의 의미가 앱이 실행될때 @configuration 에서 @Bean 된 MemberService,MemberRepository 메서드를 찾아서 호출한다음 반환값을 제가 임의로 ""표시한 memberService, memberRepository 로 넣어주는걸로 이해했는데 맞는지 궁금합니다.
=> 말씀하신 게 맞습니다. 변수에 해당 객체 레퍼런스가 들어간다고 보시면 될 것 같습니다. 대신 스프링 빈 객체 등록은 그 이전에 등록되고 @Autowired를 통해 해당 타입의 빈을 찾아 연결해준다고 보시는게 더 정확합니다. 해당 부분은 스프링 핵심 원리 기본편 강의에 자세하게 소개되어 있습니다.
test파일에서 @Autowired MemberService memberService
이 문장이 실행되면 스프링 빈에서 땡겨온 (db에 연결된)멤버 서비스 객체를 이용할 수 있다고 이해했는데요, @Autowired MemberRepository memberRepository
이 문장은 왜 들어가있는지 이해가 안갑니다. 필요한 문장인지 궁금합니다.
=> 보시면 Then에서 memberRepository의 findById() 를 통해 member 객체를 가져와 검증하고 있는 것을 알 수 있습니다. memberService.findOne()을 이용하지 않는 이유는 검증하고 있는 대상의 메서드로 다시 검증하지 않기 위해서입니다. 지금 memberService에 대해 검증하고 있는 테스트 클래스입니다. 거기서 memberService의 메서드 하나를 테스트하기 위해 검증하고 있는 객체의 다른 메서드를 가져오는 것은 맞지 않습니다.
-김영한님 서포터즈 y2gcoder님-