
์ด๋ฒ์๋ Service ํด๋์ค ์ฝ๋๋ฅผ ํ
์คํธํด๋ณด๋ ค๊ณ ํ๋ค.
๋จผ์ Service ํด๋์ค๋ Repository ํด๋์ค์ ๋ค๋ฅด๊ฒ ํ
์คํธ๋ฅผ ํ๊ธฐ ์ํด์๋ Mock ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค.
์๋ํ๋ฉด service ํด๋์ค์ repository ์ธํฐํ์ด์ค๋ ์๋ก ์์กด๊ด๊ณ์ ์์ด, service ํด๋์ค๋ฅผ ์คํ์ํค๊ธฐ ์ํด์๋ repository์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ฌํ ์์กด์ฑ์ ๋จ์ํ
์คํธ๋ฅผ ์ด๋ ต๊ฒ ํ๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ์ฃผ์
์์ผ์ฃผ๋ Mockito ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ ์ ์๋ค.
Mockito๋ ํ
์คํ
ํ๋ ์์ํฌ์ด๊ธฐ ๋๋ฌธ์ JUnit๊ณผ ๊ฒฐํฉ๋๊ธฐ ์ํด์๋ ๋ณ๋์ ์์
์ด ํ์ํ๋ค.ย ๊ธฐ์กด์ JUnit4์์ Mockito๋ฅผ ํ์ฉํ๊ธฐ ์ํด์๋ ํด๋์ค ์ด๋
ธํ
์ด์
์ผ๋ก @RunWith(MockitoJUnitRunner.class)๋ฅผ ๋ถ์ฌ์ฃผ์ด์ผ ์ฐ๋์ด ๊ฐ๋ฅํ๋ค. ํ์ง๋ง SpringBoot 2.2.0๋ถํฐ ๊ณต์์ ์ผ๋ก JUnit5๋ฅผ ์ง์ํจ์ ๋ฐ๋ผ, ์ด์ ๋ถํฐ๋ @ExtendWith(MockitoExtension.class)๋ฅผ ์ฌ์ฉํด์ผ ๊ฒฐํฉ์ด ๊ฐ๋ฅํ๋ค.

MockBean ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํด repository ๋ฅผ ๋ชจํนํ๋ฉด ์ค์ repository ๋ฅผ ์คํ์์ผ db๋ฅผ ์กฐํํ๋ ๊ฒ์ด ์๋๋ผ ๋ฏธ๋ฆฌ ์ ์๋ ๋์์ ์ํํ๊ฒ ๋๋ค. ๋ฐ๋ผ์ service ํด๋์ค์ ๋์๋ง ๋
๋ฆฝ์ ์ผ๋ก ํ
์คํธํ ์ ์๋ ๊ฒ์ด๋ค.
userRepositoryV2.findCampusIdById(kakaoId)
์์ ์ฝ๋๋ ํ์ฌ ๋ด๊ฐ ๋ชจํนํ๊ณ ์ ํ๋ ๋ฉ์๋์ด๋ค.
Mockito.when(userRepositoryV2.findDepartmentIdById(kakaoId)).thenReturn(Optional.of(departmentId));
userRepositoryV2 ๊ฐ์ฒด์ findCampusIdById๋ผ๋ ๋ฉ์๋๋ฅผ ํธ์ถ kakaoId์ ํด๋นํ๋ ์ฌ์ฉ์์ campusId๋ฅผ ๋ฐํํ๋ค๊ณ ๊ฐ์ kakaoId๊ฐ "test_user_1234"๋ผ๋ฉด ์ด ๋ฉ์๋๋ ๊ทธ ์ฌ์ฉ์์ campusId๋ฅผ ๋ฐํํ๋ค.์ฆ, repository์ ๋์์ ๋ชจ์๋ก ์คํ์์ผฐ์ ๋ ์ด๋ ํ ๊ฐ์ ๋ฐํํ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ๋ ์
์ด๋ค.
๊ทธ ํ, service ํด๋์ค์ ์ฝ๋๋ฅผ ํ
์คํธํ๋ฉด ๋๋ค.

์ถ์ฒ: https://mangkyu.tistory.com/145 [MangKyu's Diary:ํฐ์คํ ๋ฆฌ]