๐๏ธ Mockito๋ฅผ ํ์ฉํ ์๋ฐ ํ ์คํธ ๋ชจ๋ฒ ์ฌ๋ก
Mockito๋ ๊ฐ๋ฐ์๋ค์ด ๋จ์ ํ ์คํธ๋ฅผ ์ํ mock ๊ฐ์ฒด(๊ฐ์ง ๊ฐ์ฒด)๋ฅผ ๋ง๋ค ์ ์๊ฒ ๋์์ฃผ๋ ํ ์คํธ ํ๋ ์์ํฌ ์ ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ธ๋ถ ์์กด์ฑ์ ๋์์ ์๋ฎฌ๋ ์ด์ ํ ์ ์์ด ๊ฐ๋ณ ๊ตฌ์ฑ ์์๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ํ ์คํธํ ์ ์์ต๋๋ค. ํนํ, ์ธ๋ถ ๋์์ด ์์ธกํ ์ ์๊ฑฐ๋ ์ ์ดํ๊ธฐ ์ด๋ ค์ด ์์คํ ์ ํ ์คํธํ๊ธฐ ์ ์ฉํฉ๋๋ค. ๐ ๋ ๋ฆฝ์ ์ธ ํ ์คํธ์ mock ๊ฐ์ฒด๋ฅผ ์ฌ์ฉ Mockito๋ฅผ ์ฌ์ฉํ๋ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ์ฝ๋์ ์์กด์ฑ์ ๊ดํ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค. ๊ฐ ์ ๋์ ๋ถ๋ฆฌํ์ฌ ํ ์คํธํ๋ฉด ์ธ๋ถ ๋์์ ์์กดํ์ง ์๊ณ ๊ฐ๋ฐํ ๊ธฐ๋ฅ์ ํ์ธํ ์ ์์ต๋๋ค. ๐ ๊ตฌํ์ด ์๋ ๋์ ํ์ธ ๋ฉ์๋๋ฅผ ํ ์คํธํ ๋๋, ๊ตฌํ ์ธ๋ถ ์ฌํญ๋ณด๋ค๋ ๋ฉ์๋์ ๋์์ ์ด์ ์ ๋ง์ถ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ ์คํธ์ ์ํฅ์ ๋ฏธ์น์ง ์๊ณ ๊ตฌํ์ ์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๐ ์ธ์ ์ผ์น๋ฅผ ์ํ ArgumentCaptor ์ฌ์ฉ ArgumentCaptor๋ Mockito์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ผ๋ก ๋ฉ์๋ ์ธ์๋ฅผ ์บก์ฒํ์ฌ ํ์ธํ ์ ์์ต๋๋ค. ๐ thenCallRealMethod์ ์ ์คํ ์ฌ์ฉ thenCallRealMethod๋ mock ๋ฒ์ ์ด ์๋ ๋ฉ์๋์ ์ค์ ๊ตฌํ์ ํธ์ถํ ์ ์๋ Mockito ์ ๊ธฐ๋ฅ์ ๋๋ค. ํน์ ์ํฉ์์ ์ ์ฉํ ์ ์์ง๋ง ํ ์คํธ๋ฅผ ์ด๋ ต๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ํ๋ช ํ๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๐ @Mock๊ณผ @InjectMocks ์ด๋ ธํ ์ด์ ์ฌ์ฉ ๋ชจ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ํ ์คํธ์ ์ฃผ์ ํ๋ ๊ฒ์ ๋ ์ฝ๊ฒ ๋ง๋๋ @Mock๊ณผ @InjectMock๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ด๋ ธํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ๐ reset() ์ฌ์ฉ์ ์ง์ํ๊ธฐ reset์ ๋ชฉ ๊ฐ์ฒด์ ์ํ๋ฅผ ์ง์ธ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. ํน์ ์ํฉ์์ ์ ์ฉํ ์ ์์ง๋ง ํ ์คํธ๊ฐ ์ทจ์ฝํด์ง๋ฏ๋ก ์ฃผ์ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ ๋์ ๋ฐฉ์์, ๊ฐ ํ ์คํธ ์ ์ ์๋ก์ด ๋ชฉ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด @Before ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.