Springboot์์ Mockito๋ฅผ ์ด์ฉํ ๋จ์ํ ์คํธ์ ๋ํด ๊ฐ๋จํ๊ฒ ์์๋ณด์.
์ฐ์ Mockito๊ฐ ์ ํ์ํ ์ง์ ๋ํด ์์์ผ ์ด๋ป๊ฒ ์จ์ผ ํ ์ง ๊ฐ์ด ์ฌ ๊ฒ ๊ฐ๋ค.
Service
๋ ๋๋ถ๋ถ Repository
๋ฅผ ๊ฐ๋๋ค.
์ฆ, Service
๋ Repository
์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ด๋ค.
๋จ์ ํ
์คํธ์ ๊ด์ ์ผ๋ก ๋ณผ ๋ Service
๋ฅผ ํ
์คํธ ํ ๋ ๋ค๋ฅธ ํด๋์ค์ ์ํฅ์ ์ต์๋ก ํด์ผ ํ๋ค. ๊ทธ๋์ผ ์์ํ๊ฒ Service
์ ํ
์คํธ๋ฅผ ์งํ ํ ์ ์๋ค.
๋ง์ฝ ํธํ๊ฒ ์๊ฐํ๊ณ Repository
๋ฅผ ์ง์ ์ฃผ์
๋ฐ์์ ํตํฉ ํ
์คํธ ํ์์ผ๋ก ์งํํ๋ค๋ฉด ํ
์คํธ์ ์คํจ ํน์ ์ฑ๊ณต์ ์ฌ๋ถ๊ฐ Service
์ ์๋ ์ง Repository
์ ์๋์ง ๋ฐ๋ก ์ ์ ์์ ๊ฒ์ด๋ค. ์ ์ด์ ์ด๊ฑด ๋จ์ ํ
์คํธ๊ฐ ์๋๋ค.
์์ํ๊ฒ ํ ๊ฐ ํด๋์ค๋ง์ ํ
์คํธํ๊ฒ ๋ค๋ ๊ฒ์ ๋์์ฃผ๋ ํ๋ ์์ํฌ๊ฐ Mockito
์ด๋ค.
์ด๋ค Service
ํด๋์ค๋ฅผ ํ
์คํธํ๊ณ ์ ํ ๋ ํ
์คํธ์ ์ฌ์ฉ๋ Repository
์ ๊ธฐ๋ฅ๋ค์ ์ง์ ๊ตฌํํด์ค์ผ ํ๋ค.
Repository
์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์๋ฒฝํ๊ฒ ๊ตฌํํ์ง๋ ์๊ฒ ์ง๋ง ํฐ๋ฌด๋์๋ ํด๋์ค, ๋ฉ์๋๋ ํ
์คํธ์ ์ํฅ์ ๋ผ์น ์ ์์ผ๋ฏ๋ก ์ ์ ํ ๊ฐ์ด ๋์ค๋๋ก ๊ตฌํํด์ผ ํ๋ค.
์๋ฅผ๋ค์ด DB ๋์ ์ปฌ๋ ์ ์ ์ด์ฉํด์ Repository์ CRUD๋ฅผ ๊ตฌํํ๋ ๋ฑ์ ๋ฐฉ์์ด๋ค.
ํ ์คํธ ํ ํด๋์ค๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ๋ค๋ฅธ ํด๋์ค๊ฐ ๋ง๋ค๋ฉด ๋ฐฐ๋ณด๋ค ๋ฐฐ๊ผฝ์ด ๋ ํฐ ์์ ์ด ๋ ๊ฒ์ด๋ค.
์ด๋ฐ ์์ ์ ๋ณด๋ค ์ฝ๊ฒ ํ๊ธฐ ์ํด Mockito๋ฅผ ์ฌ์ฉํ๋ค.
์ด ํ ์คํธ ํด๋์ค๊ฐ Mockito๋ฅผ ์ฌ์ฉํ๋ค๋ ํ์๋ฅผ ํด์ค๋ค.
@ExtendWith(MockitoExtension.class)
Mock๊ฐ์ฒด ์ ์ธ
@Mock
UserRepository userRepository;
Mockito.when()
UserService
์ ์ด๋ค ๋ฉ์๋๊ฐ ๋ด๋ถ์ ์ผ๋ก UserRepository
์ findById
๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์๋์ฒ๋ผ when
๊ณผ thenReturn
๋ฌธ์ ์ด์ฉํด์ ๋์์ ์ง์ ํ ์ ์๋ค.UserRepository
์ findById
์ id
๊ฐ ์ ๋ฌ๋๋ฉด ๋ฐ๋์ Optional.of(user)
๋ฅผ ๋ฆฌํดํ๊ฒ ๋๋ค. Long id = 1L;
User user = new User(id, "kim", 26);
Mockito.when(userRepository.findById(id))
.thenReturn(Optional.of(user));