๐ง ์ค๋ช
!
- ํ
์คํธ ์ฝ๋ ์์ฑ ๊ณํ์ ๊ตฌ์ํฉ๋๋ค.
ํตํฉ ํ
์คํธ
- ์ค์ ๊ฐ์ํ - ํตํฉํ
์คํธ์ ํ์ํ ์ค์ ์ ๋ฌถ์ด์ฃผ๊ธฐ(@IntegrationTestConfig) ๋ค๋ฅธ ์๋๋ฆฌ์ค์ ๋ํ ํ
์คํธ ์ฝ๋ ๊ฐํธํ๊ฒ ์์ฑ ๊ฐ๋ฅ
- MockMVC
- Web ์์ญ์ ํด๋์ค๋ฅผ ์ธ์คํด์คํ, API ํธ์ถ ๋ฐ ์๋ต ๊ฒ์ฆ
- ์ค์ ๋ฐฉ๋ฒ: MockMVC ์ธ์คํด์ค ์ง์ ์์ฑ or Spring Boot์์ ์ ๊ณต
- @AutoConfigureMockMvc
- ํธ์ถํ API์ ๋ํด ์ ์(Path, Request Spec, Expected Response)
- ํด๋น API ํธ์ถ๋ก ์ธํด ๋ณํ๊ฐ ์์๋๋ ๋ฐ์ดํฐ์ ๋ํ ๊ฒ์ฆ ์งํ
- Database
- ํ
์คํธ : H2 Database๋ฅผ ํ
์คํธ ์คํ ์์ ์ ๊ตฌ๋
- @activeprofiles(โtestโ)
- Redis
- EmbeddedRedis ์ฌ์ฉ
- SmartLifeCycle์ ํตํด Redis ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ
์ ์ฐจ
ํ
์คํธ ์ฝ๋ ๊ตฌ์ฑ ๋ฐฉ์
- Arrange(์ค๋น): ํ
์คํธ์ ํ์ํ ๋ณ์, ๊ฐ์ฒด ์์ฑ
- Act(์คํ): ํ
์คํธ ํ ์ฝ๋ ์คํ
- Assert(๊ฒ์ฆ): ๊ฒฐ๊ณผ๊ฐ ๊ฒ์ฆํ๊ธฐ
Arrange
- ์ด๊ธฐ ๋ฐ์ดํฐ ์ธํ
- ์ ์ ์ํ ๊ฒ์ฆ์ ์ํด ์ ์ ์กฐํ ์๋ต ์ค์
Act
- MockMVC
- Web ์์ญ์ ํด๋์ค๋ฅผ ์ธ์คํด์คํ, API ํธ์ถ ๋ฐ ์๋ต ๊ฒ์ฆ
- ์ค์ ๋ฐฉ๋ฒ: MockMVC ์ธ์คํด์ค ์ง์ ์์ฑ or Spring Boot์์ ์ ๊ณต
Assert
- Eventually ๊ฒ์ฆ
- ๊ณ ์ ๊ฐ์ด ์๋ ๋ก์ง์ ํ๊ณ ๋ง๋ค์ด์ง๋ ๊ฐ์ ์ง์ค (e.g 1000์ ์
๊ธ API, ๊ฒฐ๊ณผ๋ ์ฒ์ ์ถ๊ฐ๋ ๊ฐ)
โ ํด์ผํ ์ผ!
๐ง ์ค๋ช !
ํตํฉ ํ ์คํธ
์ ์ฐจ
ํ ์คํธ ์ฝ๋ ๊ตฌ์ฑ ๋ฐฉ์
ArrangeActAssertโ ํด์ผํ ์ผ!