reference๐
Mock
์ ํ๊ธ๋ก "๋ชจ์, ๊ฐ์ง์"๋ผ๋ ๋ปMock
์ด๋ผ ํ๋ค.Mock
์ ํ
์คํธํ ๋ ํ์ํย ์ค์ ๊ฐ์ฒด์ ๋์ผํ ๋ชจ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ํ
์คํธ์ ํจ์ฉ์ฑ์ ๋์ด๊ธฐ ์ํด ์ฌ์ฉํ๋ค.WebApplicationContext
๋ฅผย ๋ก๋ํ๋ฉฐย ๋ด์ฅ๋ย ์๋ธ๋ฆฟย ์ปจํ
์ด๋๊ฐย ์๋ย Mock
ย ์๋ธ๋ฆฟ์ย ์ ๊ณตํ๋ค.Mock
ย ์๋ธ๋ฆฟ์ย ๋ก๋ํ์ฌย ๊ตฌ๋ํ๊ฒย ๋๋ค.@AutoConfigureMockMvc
ย ์ด๋
ธํ
์ด์
์ย ํจ๊ปย ์ฌ์ฉํ๋ฉดย ๋ณ๋ค๋ฅธย ์ค์ ย ์์ดย ๊ฐํธํ๊ฒย MockMvc๋ฅผย ์ฌ์ฉํย ํ
์คํธ๋ฅผย ์งํํ ย ์ย ์๋ค.<aside> ๐ก
1์ฃผ์ฐจ ๊ณผ์ ๋ฅผ ์ํด ์ฒ์ ์ฝ๋ฉ์ ํ ๋๋ ์ฌ์ค Controller์ ๋ํ Test๋ฅผ ์๊ฐํ์ง ์์๋ค. Mock ๋ผ๋ ๊ฒ์ด ์๋ค๋ ๊ฒ๋ง ์์์ง ์ ํ์ํ์ง๋ ๊นจ๋ซ์ง ๋ชปํ๋ ๊ฒ ๊ฐ๋ค. ์ธ๋ถ์ ์ธ Class๋ค๊ณผ method ๋ค์ ๋ํ test๋ฅผ ๋ง์น ์ํ์์ ๋ชจ๋ ์ ์ ์๋์ด ๋๋ค๋ฉด ๊ตณ์ด ์ Controller์์ ์ค๋ฅ๊ฐ ๋๋์ง ์ดํดํ ์ ์์๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ค๋ฅ๊ฐ ๋ฌ์ ๋ Controller ์ค๋ฅ๋ ์๋์์ง๋ง, Controller๋ ์ ์๋ํ๋์ง ํ์ธํ๋ ํ ์คํธ๊ฐ ํ์ํ๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ฒ ๋์๋ค. Controller๋ ์์กด์ฑ์ด ๋ณต์กํ๊ฒ ์ฝํ์๊ธฐ ๋๋ฌธ์ ํ ๋ถ๋ถ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํด๋ ์ด๋ค ๋ถ๋ถ์ ๋ฌธ์ ์ธ์ง ํ์ ํ๊ธฐ ์ฝ์ง ์์๋ค.
</aside>
public void runCalculator(){
String input = viewManager.printInputMessage();
List<String> delimeterList = preprocessor.preprocessDelimeter(input);
String calculationSegment = preprocessor.preprocessCalculationSegment(input);
preprocessor.validateCalculationSegment(delimeterList,calculationSegment);
Integer answer = mainProcessor.calculate(preprocessor.extractSumNumbers(delimeterList,calculationSegment));
viewManager.printResult(answer);
}
<aside>
์๋ฅผ ๋ค์ด ์์ ๊ฐ์ ๊ฒฝ์ฐ์ runCalculator์์ ์ค๋ฅ๊ฐ ๋๋ค๋ฉด ์ด๋ค ๋ถ๋ถ์์ ๋๋์ง ์ธ๋ถ์ ์ผ๋ก ํ์ ํ๊ธฐ๊ฐ ์ฝ์ง๊ฐ ์์ ๊ฒ์ด๋ค. ์ด ๋ถ๋ถ์ ๊ฐ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ์ด Mock ์๋ค.
</aside>
testImplementation 'org.mockito:mockito-junit-jupiter:5.5.0โ
๋ฅผ gradle์ dependency์ ์ถ๊ฐํด์ค๋ค.
ํ
์คํธ ์์ @ExtendWith(MockitoExtension.class)
๋ฅผ ๋ฌ์์ค์ผ๋ก์จ ์๋ ์ด๊ธฐํ๋ฅผ ํ์ฉํ๋ค.