reference๐Ÿ”—

Mock ์ด๋ž€ ?

<aside> ๐Ÿ’ก

์™œ Mock๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ..?

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>


๐Ÿ“ŒMock ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

1. ์˜์กด์„ฑ ์ถ”๊ฐ€

testImplementation 'org.mockito:mockito-junit-jupiter:5.5.0โ€™ ๋ฅผ gradle์˜ dependency์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

2. ์ž๋™ ์ดˆ๊ธฐํ™” ์„ธํŒ…

ํ…Œ์ŠคํŠธ ์œ„์— @ExtendWith(MockitoExtension.class) ๋ฅผ ๋‹ฌ์•„์คŒ์œผ๋กœ์จ ์ž๋™ ์ดˆ๊ธฐํ™”๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค.