워밍업 클럽 3기 Code 과정 Day 18 미션
1. @Mock, @MockBean, @Spy, @SpyBean, @InjectMocks 차이점 @Mock, @SpySpring Context가 없이도 동작가능 Mock은 가짜 객체를 만드는 반면 Spy는 진짜 객체를 감싸서 만듬.Mock은 동작을 지정하지 않으면 기본값을 반환 Spy는 동작을 지정하지 않으면 실제 객체의 동작을 유지 @MockBean, @SpyBeanSpring Context 에서 주입을 해줌 기본적인 Mock, Spy 처럼 동작을 함. @InjectMocks기본적인 Mock 객체들을 테스트 주입(Mock, Spy) 2. 테스트 항목 @BeforeEach, given절, when절에 배치@BeforeEach void setUp() { 0-1. 사용자1 생성에 필요한 내용 준비 0-2. 사용자2 생성 0-3. 사용자1 게시물 생성에 필요한 내용 준비 0-4. 사용자1 게시물 생성 0-5. 사용자2 생성에 필요한 내용 준비 0-6. 사용자2 생성} @DisplayName("사용자가 댓글을 작성할 수 있다.")@Testvoid writeComment() { // given 1-1. 사용자1의 댓글 생성에 필요한 내용 준비 // when 1-2. 사용자1의 댓글 생성 // then 검증} @DisplayName("자신이 작성한 댓글이 아니면 수정할 수 없다.")@Testvoid cannotUpdateCommentWhenUserIsNotWriter() { // given 2-1. 사용자1의 댓글 생성에 필요한 내용 준비 2-2. 사용자1의 댓글 생성 // when 2-3. 사용자2가 사용자1의 댓글 수정 시도 // then 검증 }@DisplayName("사용자가 댓글을 수정할 수 있다.")@Testvoid updateComment() { // given 3-1. 사용자1 댓글 생성에 필요한 내용 준비 3-2. 사용자1 댓글 생성 // when 3-3. 댓글 수정 // then 검증} 결론적어도 하나의 게시물과 사용자는 생성을 한후 해당 테스트를 처리 한다. 테스트를 위해 각 테스트마다 중복된 사용자를 만들기 보다 미리 선언 후 이용하는 것이 낫다고 판단.중복된 코드도 회피를 할수 있다.