티스토리 뷰

BDD : 애플리케이션이 어떻게 “행동”해야 하는지에 대한 공통된 이해를 구성하는 방법으로, TDD에서 창안했다.

Mockito는 BddMockito라는 클래스를 통해 BDD 스타일의 API를 제공한다.

import static org.mockito.BDDMockito.*;

1. When -> Given

given(memberService.findById(1L)).willReturn(Optional.of(member));
given(studyRepository.save(study)).willReturn(study);

2. Verify -> Then

then(memberService).should(times(1)).notify(study);
then(memberService).shouldHaveNoMoreInteractions();
@ExtendWith(MockitoExtension.class)
class StudyServiceTest {
    @Mock MemberService memberService;
    @Mock StudyRepository studyRepository;

    @Test
    void createStudy() {
        // Given
        Member member = new Member();
        member.setId(1L);
        member.setEmail("mandy@gmail.com");

        Study study = new Study(10, "java");

//        when(memberService.findById(1L)).thenReturn(Optional.of(member));
        given(memberService.findById(1L)).willReturn(Optional.of(member));
//        when(studyRepository.save(study)).thenReturn(study);
        given(studyRepository.save(study)).willReturn(study);

        // When
        StudyService studyService = new StudyService(memberService, studyRepository);
        studyService.createNewStudy(1L, study);

        // Then
//        verify(memberService, times(1)).notify(study);
        then(memberService).should(times(1)).notify(study);
//        verifyNoMoreInteractions(memberService);
        then(memberService).shouldHaveNoMoreInteractions();
    }
}

 

 

 

 

출처

https://www.inflearn.com/course/the-java-application-test 더 자바, 애플리케이션을 테스트하는 다양한 방법(백기선)

728x90

'Test > Mockito' 카테고리의 다른 글

[Mockito] 3. Mock 객체 확인  (0) 2021.12.10
[Mockito] 2. Mock 객체를 만들어 테스트하기  (0) 2021.12.09
[Mockito] 1. Mockito 시작하기  (0) 2021.12.09