4.1 ๋ฐฉ๋ฒ ๋งค๊ฐ๋ณ์
๋ชจ์ ๊ฐ์ฒด์ ์ถ๊ฐ๋ ์ด์ ๊ท์น์ ๋งค๊ฐ ๋ณ์๊ฐ ์๋ ๋ฉ์๋๋ฅผ ์ฒ๋ฆฌํ์ต๋๋ค. ๋งค๊ฐ๋ณ์๊ฐ ์๋ ๋ฉ์๋์ ๋ํ ๊ท์น์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น? ๋ํ ์ผ๋ถ ๋งค๊ฐ ๋ณ์ ๊ฐ์ ๋ํด ํ๋์ ๊ฒฐ๊ณผ๊ฐ ์๊ณ ๋ค๋ฅธ ๊ฒฐ๊ณผ์ ๋ํด ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ ์๋๋ก ๊ท์น์ ๋ง๋ค๊ณ ์ถ์ต๋๋ค.
๊ทธ๋ ๊ฒ ํ๋ฉด ์ฌ๋ฌ๋ถ๋ ํ ์ ์์ต๋๋ค. ๋ฉ์๋๊ฐ ํน์ ๋งค๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ํญ๋ชฉ์ ๋ฐํํ๋๋ก ํ๋ ค๋ฉด ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์์ต๋๋ค.
Mockito.doReturn(result).when(an object).method name(parameter);
๋ ์ ์ดํดํ๊ธฐ ์ํด ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. List๊ฐ 10๋ฒ์งธ ์์๋ฅผ ์์ฒญํ ๋ Ivan์ด๋ผ๋ ์ด๋ฆ์ ๋ฐํํ๊ณ 500๋ฒ์งธ ์์๋ฅผ ์์ฒญํ ๋ Marya๋ผ๋ ์ด๋ฆ์ ๋ฐํํ๋๋ก ํฉ๋๋ค. ๋งํ ๊ฒ๋ณด๋ค ๋นจ๋ฆฌ.
@ExtendWith(MockitoExtension.class)
class ParamsTest {
@Mock
List mockList;
@Test
public void whenMockAnnotation() {
//adding the first rule
Mockito.doReturn("Ivan").when(mockList).get(10);
//adding a second rule
Mockito.doReturn("Maria").when(mockList).get(500);
assertEquals("Ivan", mockList.get(10));
assertEquals("Maria", mockList.get(500));
}
}
4.2 ๋งค๊ฐ๋ณ์ ํ ํ๋ฆฟ
๊ทธ๋ฆฌ๊ณ ์ฆ์ ๊ตํํ ๋๋ฃ๊ฐ "๋ฉ์๋์ ์ธ์๊ฐ ํ์ํ์ง๋ง ์ด๋ค ๊ฐ์ ๋ํด์๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?"๋ผ๋ ์ง๋ฌธ์ ํ ๊ฒ์ ๋๋ค. ์ฐ์ง ๋ง์:
Mockito.doReturn("Ivan").when(mockList).get(1);
Mockito.doReturn("Ivan").when(mockList).get(2);
Mockito.doReturn("Ivan").when(mockList).get(99);
์๋์, ์๋ฌด๋ ๋น์ ์๊ฒ ๊ทธ๋ ๊ฒ ์ฐ๋ผ๊ณ ๊ฐ์ํ์ง ์์ต๋๋ค. ์ธ์๊ฐ ์๋ ๋ฉ์๋์ ๋ํด ์๋ํ๋ ๋ชจ์ ๊ฐ์ฒด์ ๊ท์น์ ์ถ๊ฐํ๋ ค๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ํ ํน์ ๊ฐ์ฒด๊ฐ ์์ต๋๋ค.
Mockito.any()
์ฐ๋ฆฌ์ ์๋ ๋ค์๊ณผ ๊ฐ์ด ์์ฑ๋ฉ๋๋ค.
Mockito.doReturn("Ivan").when(mockList).get(any(int.class));
์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ๋์์ค๊ฐ ์์ต๋๋ค. ๊ฐ์ฒด์๋ Mockito.any()
์ ํ์ด ์์ผ๋ฏ๋ก Object
๋ค๋ฅธ ์ ํ์ ๋งค๊ฐ๋ณ์์ ๋ํ ์ ์ฌ์ด๊ฐ ์์ต๋๋ค.
๋ฐฉ๋ฒ | ๋งค๊ฐ๋ณ์ ์ ํ | |
---|---|---|
1 | ์ด๋() | null์ ํฌํจํ๋ ๊ฐ์ฒด |
2 | any(ํด๋์ค๋ช .ํด๋์ค) | ํด๋์ค ์ด๋ฆ |
์ผ | ์์์ ์ ์() | ์ ์ |
4 | ๋ชจ๋ ๋ถ์ธ() | ๋ถ์ธ |
5 | ๋ชจ๋ ๋๋ธ() | ๋๋ธ |
6 | ์ ๋๋ฆฌ์คํธ() | ๋ชฉ๋ก |
๋ณด๋ค ์ ํํ๊ฒ, ์ฐ๋ฆฌ์ ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ๋๋ค:
Mockito.doReturn("Ivan").when(mockList).get(anyInt());
4.3 doAnswer() ๋ฉ์๋
์ฐ๋ฆฌ๋ ๊ฐ์ ๋ฉ์๋์ ๋ณต์กํ ๋์์ ๋๋ฌํ์ต๋๋ค. ์กฐ๋ง๊ฐ ์ด ๊ฐ์ ๋ฉ์๋๊ฐ ๋ณต์กํ ๋์์ ๊ฐ๊ธฐ๋ฅผ ์ํ๋ ์ํฉ์ด ์ฌ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋งค๊ฐ ๋ณ์์ ๋ฐ๋ผ ๊ฐ์ ๋ฐํํ๊ณ ๋ฌธ์์ด์ ๋๋ฌธ์๋ก ๋ณํํด์ผ ํฉ๋๋ค.
์ด๋ฅผ ์ํ ํน๋ณํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค - doAnswer()
. ํ์ํ ์์
์ ์ํํ๋ ํจ์๊ฐ ์ ๋ฌ๋ฉ๋๋ค.
Mockito.doAnswer(function).when(an object).method name(parameter);
get()
ํด๋์ค ๋ฉ์๋๊ฐ List
์ ๋ฌ๋ ์ธ์์ ์ ๊ณฑ์ ๋ฐํ ํ๋๋ก ํฉ์๋ค . ๊ทธ๋ฆฌ๊ณ ๋ค์ ํ๋ก๊ทธ๋จ์ ์์ฑํฉ๋๋ค.
@ExtendWith(MockitoExtension.class)
class DoAnswerTest {
@Mock
List mockList;
@Test
public void whenMockAnnotation() {
Mockito.doAnswer(invocation -> {
int parameter = invocation.getArgument(0);
return parameter * parameter;
}).when(mockList).get(anyInt());
assertEquals(100, mockList.get(10));
assertEquals(25, mockList.get(5));
}
}
Answer ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํจ์๋ฅผ ์ ์ํ์ต๋๋ค.
GO TO FULL VERSION