Mock Object
ํด์ํ๋ฉด ๋ชจ์ ๊ฐ์ฒด
๋ผ๋ ์๋ฏธ๋ก ํ๋ก๊ทธ๋จ์ ํ
์คํธ ํ ๋ ์ค์ ์ฌ์ฉํ๋ ๋ชจ๋(๊ฐ์ฒด)์ ์ฌ์ฉํ์ง ์๊ณ ์ค์ ๋ชจ๋์ ํ๋ด๋ด๋ ๊ฐ์ง ๋ชจ๋์ ์์ฑํ์ฌ ํ
์คํธ ํจ์ฉ์ฑ์ ๋์ด๋ ๊ฐ์ฒด
Stub๊ณผ์ ์ฐจ์ด์
Stub์
์ํ ๊ฒ์ฆ
์ ์ฌ์ฉํ๊ณ Mock Object๋ํ์ ๊ฒ์ฆ
์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ผ๊ณ๋งํด ํ์ธ๋ฌ
๋ ์ค๋ช ํ๊ณ ์๋ค.์ถ์ฒ : http://martinfowler.com/articles/mocksArentStubs.html
Spring ๋จ์ ํ
์คํธ
@SpringBootTest
์ผ๋ฐ์ ์ธ ํ ์คํธ๋ก slicing์ ์ฌ์ฉํ์ง ์๊ณ ์ ์ฒด ํ๋ก๊ทธ๋จ ์ปจํ ์คํธ๋ฅผ ์์ํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ํ์ผ์ ๋ก๋ํ๊ณ bean์ ์ฃผ์ ํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋๋ฆฌ๋ค.
SpringBootTest์์ MockMVC
๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด @AutoConfigureMockMvc๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ์ฌ์ฉํ ์ ์๋ค. (๋ด๋ถ์ webEnvirment์ ๊ธฐ๋ณธ๊ฐ์ด mock์ผ๋ก ๋์ด์์ด ์ฌ์ฉ ๊ฐ๋ฅ)
@WebMvcTest
MVC๋ฅผ ์ํ ํ ์คํธ๋ก ๊ณ์ธต๋ณ๋ก ๋๋์ด์ ์น๊ณผ ๊ด๋ จ๋ ๋ถ๋ถ๋ง ํ ์คํธํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๋ค.(์ฌ๋ผ์ด์ค ํ ์คํธ)
Contoller ๊ณ์ธต๋ง ๋ฑ๋ก (์๋น์ค ๋ฑ๋ก x) (@Controller, @ControlloerAdvice, @JsonComponent, @Conveter, @GenericConverter, @Filter, @handlerInterceptor,@WebMvcConfigurer ๋ง ์ค์บ )
MockMvc
,MockBean
์ ์๋ ์ค์ ์ ์๋์ผ๋ก ์ค์ ํด์ฃผ๊ณ Spring Security
์ ํ
์คํธ๋ ์ง์ํ๋ค.
MockMvc : ์คํ๋ง MVC ํ ์คํธ ํต์ฌ ํด๋์ค ์น ์๋ฒ๋ฅผ ๋จ์์ง ์๊ณ ๋ ์คํ๋ง MVC(DisapatcherServlet)์ด ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ ํ์ธํ ์ ์์ด ์ปจํธ๋กค๋ฌ ํ ์คํธ์ฉ์ผ๋ก ์์ฃผ ์ด๋ค. (๋จ์ํ ์คํธ๋ณด๋ค๋ ๊ฐ์ฒด๋ฅผ ๋ ๋ง์ด ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด์ง๋ ์๋ค.)
perform : ์ค์ ์์ฒญ์ ์ํํ๋ ํจ์ ๋ด๋ถ์ ํ๋ผ๋ฏธํฐ๋ค๋ก RequestBuilder๋ฅผ ์ด์ฉํด contentType, accept,content๋ฑ ๋ค์ํ ๋ฉ์๋๋ค๋ก ์์ฒญ ํค๋์ ๊ฐ์ setํ ์ ์๋ค.
MockMvcRequestBuilder์ ์ฌ ์ ์๋ ๋ฉ์๋ : post, get, delete,put,patch,options,head,request
andDo : perform ์ํํ ๋ด๋ถ ํ๋ผ๋ฏธํฐ ๋ฉ์๋๋ฅผ ์คํ
andExpect : ์๋ต์ผ๋ก ๊ธฐ๋ํ๋ ๊ฐ๋ค์ setting
andReturn
Mock ๊ฐ์ฒด๋ return ๊ฐ์ด null
MockBean ์คํ๋ง ๋ถํธ ํ ์คํธ ํจํค์ง ๋ด๋ถ์ ์กด์ฌํ๊ณ ํ ์คํธ ํ๋ ค๋ ๊ธฐ์กด ๊ฐ์ฒด๋ด์ Bean์ด ์๋ MockBean์ ์ฃผ์ ํด ์ฌ์ฉํ๋ค
Mock๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก mock๊ฐ์ฒด์ ํ์๋ฅผ ์ง์ ํด ์ค ์ ์๋ค.
์น ๊ด๋ จ Bean๋ง ๋ฑ๋ก์ ํ์ฌ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ Repository๊ฐ์ Bean์ ๋ฑ๋กํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด๋ ๋ฑ๋กํ๋ ค๋ฉด MockBean(Spring Boot Test ๋ด๋ถ์ ์กด์ฌ) ์ ์ด์ฉํ์ฌ ํ
์คํธ๋ฅผ ์งํํด์ผ ํ๋ค.
Mockito
Mock ๊ฐ์ฒด๋ฅผ ์ง์ ๋ง๋ค์ด ํ ์คํธ ์ฝ๋ ์์ฑํ๋ ๊ฒ์ ๋ฒ๊ฑฐ๋กญ๊ธฐ๋ํ๊ณ Mockํด๋์ค ๊ด๋ฆฌ๋ ๋ถ๋ด์ค๋ฝ๊ธฐ ๋๋ฌธ์ ์๊ฐ์ ์๋์ ์ผ๋ก ์ ์ฝํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Mock Mockito ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด๋ถ์ ์์นํด mock๊ฐ์ฒด๊ฐ ํน์ ๋ฉ์๋๋ฅผ ํธ์ถ ํ์ ๋ ๋์ํ๋ ๋ฐฉ์์ ์ค์ ํ๋ค.
Last updated