์คํ๋ง ๋ถํธ๋ฅผ ํ์ฉํ๋ค๋ฉด
spring-boot-starter-test ์ ์ด๋ฏธ mockito์ ์์กด์ฑ์ด ์ถ๊ฐ ๋์ด์๋ค.
๊ทธ๋ ์ง ์๋ค๋ฉด ๋๊ฐ์ง ์์กด์ฑ์ ์ง์ ์ถ๊ฐํ์
<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>3.1.0</version> <scope>test</scope> </dependency> <-- Mockito Jupiter - JUnit๊ณผ Mockito์ ์ฐ๋ (JUnit์ Extention์) --> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-junit-jupiter</artifactId> <version>3.1.0</version> <scope>test</scope> </dependency>
Mock์ ํ์ฉํ ํ ์คํธ๋ฅผ ์์ฑํ๋๋ฒ
- Mock์ ๋ง๋๋ ๋ฐฉ๋ฒ
- Mock์ ๋์์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
- Mock์ ํ๋์ ๊ฒ์ฆํ๋ ๋ฐฉ๋ฒ
- Mock์ ๋ง๋๋ ๋ฐฉ๋ฒ
MemberService memberService = Mockito.mock(MemberService.class); StudyRepository studyRepository = Mockito.(StudyRepository.class);
@Mock
์ด๋ ธํ ์ด์ ํ์ฉ
- ํด๋์ค์
@ExtendWith(MockitoExtension.class)
์์ด์ผํจ
@Mock MemberService memberService; @Mock StudyRepository studyRepository;
@Test void createStudyService(@Mock MemberService memberService, @Mock StudyRepository studyRepository) { ... }
- Mock Object Stubbing
๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ Mock ๊ฐ์ฒด๋
- null์ return
- Optional ํ์ ์ Optional.empty
- primitive ํ์ ์ ๊ธฐ๋ณธ primitive ๊ฐ
- collection์ ๋น ์ฝ๋ ์
- void ๋ฅผ ๋ฆฌํดํ๋ ๋ฉ์๋๋ ์์ธ๋ฅผ ๋์ง์ง ์๊ณ ์๋ฌด๊ฒ๋ ํ์ง ์์
@Test void createNewStudy(@Mock MemberService memberService, @Mock StudyRepository studyRepository) { StudyService studyService = new StudyService(memberService, studyRepository); assertNotNull(studyService); Member member = new Member(); member.setId(1L); member.setEmail("keesun@email.com"); Mockito.when(memberService.findById(ArgumentMatchers.any())) .thenReturn(Optional.of(member)) .thenThrow(new RuntimeException()) .thenReturn(Optional.empty()); Optional<Member> byId = memberService.findById(1L); assertEquals("keesun@email.com", byId.get().getEmail()); assertThrows(RuntimeException.class, () -> { memberService.findById(2L); }); assertEquals(Optional.empty(), memberService.findById(3L)); }