๐ŸƒTDD ๊ฐœ๋ฐœ - ServiceTest

dev_itzel_02โœจยท2025๋…„ 2์›” 28์ผ

๐ŸƒJavaSpring

๋ชฉ๋ก ๋ณด๊ธฐ
7/11
post-thumbnail

์ด๋ฒˆ์—๋Š” 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:ํ‹ฐ์Šคํ† ๋ฆฌ]

profile
๐Ÿœ๐Ÿ‘ฃsteadiness๐Ÿœ๐Ÿ‘ฃ

0๊ฐœ์˜ ๋Œ“๊ธ€