๐ ์คํ๋ง์์์ TEST= MockMvc์ @MockBean
- @WebMvcTest : ์คํ๋ง MVC components์ ์ต์ ํ๋ test๋ค.
" a Spring MVC test that focuses only on Spring MVC components. "
- ๋จ, full auto-configuration ์ annotation์์๋ ์ฌ์ฉํ ์ ์๋ค. ์ค๋ก์ง MVC test์๋ง ๊ฐ๋ฅํ๋ค. ์๋ฅผ ๋ค๋ฉด @Controller, @ControllerAdvice, WebMvcConfigurer, HandlerMethodArgumentResolver ๋ง์ด ๊ฐ๋ฅํ๊ณ @Component, @Service or @Repository์ test๋ก๋ ์ฌ์ฉํ ์ ์๋ค.
- ๋ฐ๋ผ์ @Service or @Repository์ test๋ก๋ ์ผ๋ฐ ํ ์คํธ๋ฅผ ์ด์ฉํด์ผํ๋ค. ์คํ๋ง์ด ์๋๋ผ ์ผ๋ฐ์ ์ธ ํ ์คํธ ์ด๋ฏ๋ก @Autowired๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ์ผ๋ฐ์ ์ผ๋ก @WebMvcTest๋ @Controller ์ ๊ด๋ จ๋ ๋น์ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ํด @MockBean or @Import ๋ฅผ ์ง์ ํ๋ค.
- @MockBean : ๊ฐ์ง bean, ์ค์ ์๋น์ค์ ์๊ด์์ด ํ ์คํธ๊ฐ ๊ฐ๋ฅํ ์ด์ ๋ค.
- MVC๋ฅผ ์ํ ํ ์คํธ, ์น์์ ํ ์คํธํ๊ธฐ ํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ํ ์คํธํ๋๋ฐ ์ ํฉํ๋ค.
- ์น์์์ ์์ฒญ๊ณผ ์๋ต์ ๋ํ ํ ์คํธ ์งํํ๋ค.
- security ํน์ filter ๊น์ง ์๋์ผ๋ก ํ ์คํธํ๋ฉฐ ์๋์ผ๋ก ์ถ๊ฐ/์ญ์ ๊ฐ๋ฅ
- ํ ์คํธ์์ @Transactional์ ์ฌ์ฉํ๋ฉด ํ ์คํธ๋ฅผ ๋ง์น๊ณ ๋์ ์์ ๋ ๋ฐ์ดํฐ๊ฐ ๋กค๋ฐฑ๋๋ค.
+) @SpyBean ์ปจํธ๋กค๋ฌ์ ์ ์ฅ์์ ๋ํ ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํ ์ ์๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด๋ค. ๊ตฌํ์ฒด๋ฅผ ๋ช ์ ํด์ฃผ์ด์ผํ๋ค.
ํ์ง๋ง, ์ด ๋ฐฉ์์ ํ ์คํธ ํ๊ณ ์ ํ๋ ๊ฐ์ฒด ์ธ์ ๊ฒ๋ค๋ ๋ชจ๋ ์์กดํด์ฃผ์ด์ผ ํ๋ค. Mock ๊ฐ์ฒด๊ฐ ํ์ํ๋ค๋ ์๊ธฐ๋ค.
Mock ๊ฐ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ mokito๋ค. spring์์ ์ด๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ํ ์คํธ ํ ์ ์๋ค.
์ด๋ ธํ ์ด์ | ์ค๋ช | Bean |
@WebMvcTest | ๋จ์ ํ ์คํธ, Mvc ํ ์คํธ | MVC ๊ด๋ จ๋ Bean |
@SpringBootTest | ํตํฉ ํ ์คํธ, ์ ์ฒด | Bean ์ ์ฒด |
@MockBean | ๊ฐ์ง Bean |
๐ ์ผ๋ฐ TEST์ @Mock์ @BeforeEach, MokitoAnnotations.openMocks
- ์ผ๋ฐํ ์คํธ์์๋ @MockBean, @Autowired๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก, @Mock์ ์ฌ์ฉํ๋ค.
- ๋ํ, ์์กด์ฑ ์ฃผ์ ์ด ๋ถ๊ฐํ๋ฏ๋ก ์ง์ ์ฐ๊ฒฐํ ์ ์๋๋ก @BeforeEach์ ์ฌ์ฉํ๋๋ฐ, ์ด๊ฑด ๋งค ๋จ์ ํ ์คํธ ๋ง๋ค. ๋ํดํธ ๊ฐ์ฒ๋ผ ๋จผ์ ์คํ๋๋ ๋ฉ์๋์ ์ง์ ํ๋ค. ๋๋ง๋ค ์ฃผ์ ์ด ๋๋ค. ๋ ธ๊ฐ๋ค ์ฃผ์ (?). ์ฌ์ค์ Mockito๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ DI๋๊ตฌ๋ก์จ ๋์ํ๋๊ฑฐ๋ค.
- MockitoAnnotations.openMocks(this)
- this : ํ ์คํธ ํด๋์ค ์์ฒด
- ํ ์คํธ ํด๋์ค์ @Mock ํ๋์ ๋ํด ๋ชจ๋ ์ธ์คํด์ค ํฉ์ฑ
- @InjectMocks ํ๋์ ๋ชจ๋ Mock ์ธ์คํด์ค ์ฃผ์
'์ด๋ก > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง HTTP Message Body ์ Message Converter 2 - RequestMappingHandlerAdapter (0) | 2021.12.18 |
---|---|
์คํ๋ง HTTP Message Body ์ Message Converter 1 (0) | 2021.11.20 |
[Spring Boot] Spring Security (0) | 2021.08.15 |
[Spring Boot] Spring MVC ๊ตฌ์กฐ / ํธ๋ค๋ฌ ๋งคํ๊ณผ ํธ๋ค๋ฌ ์ด๋ํฐ (0) | 2021.08.08 |
[Spring] ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์์กด๊ด๊ณ ์๋ ์ฃผ์ ์์ํ๊ธฐ (0) | 2021.08.01 |