inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

인프런 워밍업 클럽 스터디 3기 - 백엔드 클린 코드, 테스트 코드 Day 18 미션

ssshhh
0

Q1. @Mock, @MockBean, @Spy, @SpyBean, @InjectMocks 의 차이를 한번 정리해 봅시다.

Mock 관련

Spy 관련

InjectMocks

@Mock 
UserRepository userRepository; 

@InjectMocks 
UserService userService; // userRepository가 자동으로 주입

 

@InjectMocks vs @Autowired

예시 비교:

// 단위 테스트
@Mock 
UserRepository userRepository; 
@InjectMocks 
UserService userService; // userRepository가 주입

// 스프링 컨테이너
@MockBean 
UserRepository userRepository; 
@Autowired 
UserService userService; // userRepository가 주입

 

 

Q2. 각 항목 배치하기

 

public class CommentServiceTest {

    @BeforeEach
    void setUp() {
        1-1, 2-1, 3-1 사용자1 생성에 필요한 내용 준비
        1-2, 2-2, 3-2 사용자1 생성
        1-3, 2-3, 3-5 사용자1의 게시물1 생성에 필요한 내용 준비
        1-4, 2-4, 3-6 게시물1 생성
    }

    @DisplayName("사용자가 댓글을 작성할 수 있다.")
    @Test
    void writeComment() {
        // given
        1-5. 댓글 생성에 필요한 내용 준비

        // when
        1-6. 댓글 생성

        // then
        검증
    }

    @DisplayName("사용자가 댓글을 수정할 수 있다.")
    @Test
    void updateComment() {
        // given
        2-5. 댓글 생성에 필요한 내용 준비
        2-6. 댓글 생성

        // when
        2-7. 댓글 수정

        // then
        검증
    }

    @DisplayName("자신이 작성한 댓글이 아니면 수정할 수 없다.")
    @Test
    void cannotUpdateCommentWhenUserIsNotWriter() {
        // given
        3-3. 사용자2 생성에 필요한 내용 준비
        3-4. 사용자2 생성
        3-7. 사용자1의 댓글 생성에 필요한 내용 준비
        3-8. 사용자1의 댓글 생성

        // when
        3-9. 사용자2가 사용자1의 댓글 수정 시도

        // then
        검증
    }
}

 

출처 : https://inf.run/EBCNE

답변 0