๐ŸŽ ์•„์ด-์˜ค-์—์Šค/๐Ÿ“ฑ iOS ๊ฐœ๋ฐœ

[iOS] ๋ฉ”์ดํŠธ๋Ÿฌ๋„ˆ: ์šฐ๋‹นํƒ•ํƒ• RxTest๋ฅผ ์ด์šฉํ•œ ๋‹จ์œ„ํ…Œ์ŠคํŠธ

๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด 2021. 12. 5. 17:26

๋ฉ”์ดํŠธ ๋Ÿฌ๋„ˆ ์•ฑ ๊ฐœ๋ฐœ ๊ณผ์ •์„ ๊ณต์œ ํ•˜๋Š” ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค!

 

GitHub - boostcampwm-2021/iOS06-MateRunner: ํ•จ๊ป˜ ๋‹ฌ๋ฆฌ๋Š” ์ฆ๊ฑฐ์›€, Mate Runner ๐Ÿƒ๐Ÿป‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ

ํ•จ๊ป˜ ๋‹ฌ๋ฆฌ๋Š” ์ฆ๊ฑฐ์›€, Mate Runner ๐Ÿƒ๐Ÿป‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ. Contribute to boostcampwm-2021/iOS06-MateRunner development by creating an account on GitHub.

github.com

์—ฌ๊ธฐ์„œ ์ €ํฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ์ž์„ธํžˆ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”!

 

๊ทธ๋Ÿผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

 

MVVM์— ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๊นŒ์ง€ ํ•ด๋†“๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์•ˆ ํ•œ๋‹ค๊ณ ?

์ €ํฌ ํŒ€์€ MVVM๊ณผ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ–ˆ๋Š”๋ฐ์š”, ์ด๋Ÿฐ ๊ตฌ์กฐ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ์–ป๋Š” ํฐ ์ด์  ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ…Œ์ŠคํŠธ๊ฐ€ ์šฉ์ดํ•œ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋งˆ๋ฌด๋ฆฌ๊นŒ์ง€ ๋”ฑ ํ•œ ์ฃผ, ์ €ํฌ ํŒ€์€ ๋‚จ์€ ํ•œ ์ฃผ์˜ ๋ชฉํ‘œ๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ๋‚˜๋ˆˆ ๋ทฐ ๋ชจ๋ธ๊ณผ ์œ ์ฆˆ ์ผ€์ด์Šค๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๋‹จ์œ„ ํ…Œ์ŠคํŠธํ•ด๋ณด๋Š” ๊ฒƒ์œผ๋กœ ์žก์•˜์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๊ฒŒ ์ด์Šˆ๋ฅผ ๋“ฑ๋กํ–ˆ๊ณ 

์ด๋ ‡๊ฒŒ 44๊ฐœ์˜ ์ด์Šˆ๊ฐ€ ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค...ใ…‹ใ…‹ใ…‹ใ…‹ ์–ธ์ œ ๋‹ค ํ•ด..?

 

ํ…Œ์ŠคํŠธ ์„ค๊ณ„

์ €ํฌ๋Š” ๋ทฐ ๋ชจ๋ธ์„ Input/Output์œผ๋กœ ๋ชจ๋ธ๋งํ•˜์—ฌ ์„ค๊ณ„ํ–ˆ๊ณ , ์œ ์ฆˆ ์ผ€์ด์Šค์—๋Š” ๋ทฐ ๋ชจ๋ธ์—์„œ ํ˜ธ์ถœํ•  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ •์˜ํ•ด๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ทฐ ๋ชจ๋ธ์€ ์ด๋ ‡๊ฒŒ Input์— ๋Œ€ํ•ด Ouput์ด ์›ํ•˜๋Š” ๋Œ€๋กœ ์ž˜ ๋‚˜์˜ค๋Š”์ง€๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์‚ผ์•˜๊ณ ,

์œ ์ฆˆ ์ผ€์ด์Šค๋Š” ํ”„๋กœํ† ์ฝœ์— ์ •์˜ํ•œ ํ•จ์ˆ˜๋“ค์ด ์˜๋„ํ–ˆ๋˜ ๋Œ€๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“œ๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์‚ผ์•˜์Šต๋‹ˆ๋‹ค.

 

๊ทผ๋ฐ ์šฐ๋ฆฐ ๋‹ค Rx์ž–์•„..

๊ทธ๋Ÿฐ๋ฐ ์ €ํฌ ํŒ€์€ ๊ฑฐ์˜ ๋ชจ๋“  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ๊ฒฐ๊ณผ์™€ ๋ทฐ ๋ชจ๋ธ Ouput์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ํ˜๋Ÿฌ๊ฐ€๋„๋ก ํ–ˆ๋‹ค๋Š” ๊ฒƒ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ํฐ ํ˜ผ๋ž€์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Rx ์ž์ฒด๊ฐ€ ์ฒ˜์Œ ํ•ด๋ณด๋Š” ๊ฒฝํ—˜์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š” ๊ฒƒ๋„ ์กฐ๊ธˆ์€ ๋ง‰๋ง‰ํ–ˆ์ฃ .

 

๊ทธ๋ž˜์„œ ์—ด์‹ฌํžˆ ์„œ์นญ์„ ํ•ด๋ณธ ๊ฒฐ๊ณผ RxTest ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ€์ƒ์˜ ์‹œ๊ฐ„์— input ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฉ์ถœ์‹œํ‚ค๊ณ  ์ด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฐ๊ณผ ๊ฐ’๋“ค์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

RxTest๋กœ ํ…Œ์ŠคํŠธํ•˜๊ธฐ

RxTest๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ๋Š” TestScheduler ๊ฐ์ฒด๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๋‹ฌ๋ฆฌ๊ธฐ ์šด๋™ ์ค‘ ํ™”๋ฉด์˜ ๋ทฐ ๋ชจ๋ธ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ์ด ํ…Œ์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์–ด๋–ป๊ฒŒ RxTest๋กœ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋Š”์ง€ ์ด์•ผ๊ธฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

๋จผ์ € ์ด๋ ‡๊ฒŒ ๋งค ํ…Œ์ŠคํŠธ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ TestScheduler์˜ ์‹œ์ž‘์‹œ๊ฐ„์„ ๊ฐ€์ƒ ์‹œ๊ฐ„ "0"์œผ๋กœ ๋จผ์ € ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ํ†ตํ•ด ๋ทฐ ๋ชจ๋ธ์—์„œ ๋ฐฉ์ถœ๋˜๋Š” ๊ฐ’๋“ค์„ ๋ฐ›์„ Observer๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์ •์ˆ˜๋กœ ๋œ ์ดˆ๋‹จ์œ„ ์‹œ๊ฐ„์ด mm:ss ํ˜•ํƒœ๋กœ ํฌ๋งทํŒ…์ด ์ž˜ ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ต์ €๋ฒ„๊ฐ€ ๋ฐ›์„ ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ String์œผ๋กœ ์ง€์ •ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

์˜ต์ €๋ฒ„๊ฐ€ ์žˆ๋‹ค๋ฉด ์˜ต์ €๋ฒ„๋ธ”๋„ ์žˆ์–ด์•ผ๊ฒ ์ฃ ? ๋‹จ์œ„ ์‹œ๊ฐ„ 10์— Void๋ฅผ ๋ฐฉ์ถœํ•˜๋Š” ์˜ต์ €๋ฒ„๋ธ”๋„ ํ•˜๋‚˜ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด Void๋Š” ์ด ๋ทฐ ๋ชจ๋ธ์— ์—ฐ๊ฒฐ๋œ ํ™”๋ฉด์ด ์ฒ˜์Œ ๋กœ๋“œ๋˜์—ˆ์„ ๋•Œ์— ๋Œ€ํ•œ ViewDidLoad ์ด๋ฒคํŠธ์˜ ๋ฐœ์ƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. 

 

๋”ฐ๋ผ์„œ ๋ทฐ ๋ชจ๋ธ์˜ Input์„ ์ •์˜ํ•  ๋•Œ ๋ฐฉ๊ธˆ ์ƒ์„ฑํ•œ ์˜ต์ €๋ฒ„๋ธ”์„ viewDidLoadEvent์— ๋„ฃ์–ด์ฃผ๊ณ , ๋‚˜๋จธ์ง€ ํ”„๋กœํผํ‹ฐ๋“ค์€ ๋ชจ๋‘ just๋กœ ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฉ์ถœ์‹œ์ผœ์ค๋‹ˆ๋‹ค.

 

์ด์ œ ๋ทฐ ๋ชจ๋ธ์˜ input์„ ouput์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” transform ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ouput์— ์žˆ๋Š” timeSpent ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ตฌ๋…ํ•ด ํ…Œ์ŠคํŠธ์šฉ ์˜ต์ €๋ฒ„์— ๋ฐ”์ธ๋”ฉ์„ ํ•ด์ค๋‹ˆ๋‹ค. 

 

๊ฐ‘์ž๊ธฐ take(2)๊ฐ€ ์™œ ๋‚˜์™”๋‚˜ ์‹ถ์ฃ ? ์ž ์‹œ ํ›„์— ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

 

๋งˆ์ง€๋ง‰์œผ๋กœ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ์•„๊นŒ ๋งŒ๋“ค์—ˆ๋˜ ์˜ต์ €๋ฒ„๋ธ”์˜ ๊ฐ€์ƒ์‹œ๊ฐ„ 10์— Void๋ฅผ ๋ฐฉ์ถœํ•˜๋Š” ๋™์ž‘์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. 

๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐฉ์ถœ๋˜์—ˆ์œผ๋‹ˆ ๋ทฐ ๋ชจ๋ธ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ๊ฒ ์ฃ ! ๊ทธ๋ฆฌ๊ณ  ๋ทฐ๋ชจ๋ธ์ด ๋ฐฉ์ถœํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ String ํƒ€์ž…์„ ๊ฐ’์œผ๋กœ ๋ฐ›๋Š” ์˜ต์ €๋ฒ„์— ๋“ค์–ด๊ฐ”์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

Scheduler๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•œ ์˜ต์ €๋ฒ„๋Š” ์ตœ๊ทผ ๊ฐ’๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž์‹ ์ด ์ŠคํŠธ๋ฆผ์—์„œ ๋ฐ›์€ ๋ชจ๋“  ๊ฐ’๊ณผ ๋‹จ์œ„ ์‹œ๊ฐ„์— ๋Œ€ํ•œ ๊ธฐ๋ก์„ events ๋ฐฐ์—ด์— ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๋ฐฐ์—ด์ด ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€์ง€ ํ™•์ธํ•˜๋ฉด ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์œ„์—์„œ๋Š” 10์ดˆ๊ฐ€ ์ง€๋‚ฌ์„ ๋•Œ ๋ฌธ์ž์—ด์ด ์ž˜ ๋งŒ๋“ค์–ด์ง€๋Š”์ง€ ํ…Œ์ŠคํŠธํ–ˆ๊ณ , ๊ตฌ๋…์„ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ๋ฐฉ์ถœ๋œ ์ดˆ๊ธฐ๊ฐ’์ธ "00:00"๊ณผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ๊ธฐ๋Œ€ ๊ฐ’์ธ "00:10"์ด ์ž˜ ๋„์ฐฉํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

HH:MM:SS ๋ฉด ์–ด๋–กํ•ด..?

์œ„์—์„œ ์ง„ํ–‰ํ–ˆ๋˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ํƒ€์ด๋จธ์—์„œ ๋ฐฉ์ถœ๋˜๋Š” ๊ฒฝ๊ณผ์‹œ๊ฐ„์ด ๋ฌธ์ž์—ด ํฌ๋งท์œผ๋กœ ์ž˜ ๋ณ€๊ฒฝ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ์˜€์Šต๋‹ˆ๋‹ค. ๋ทฐ ๋ชจ๋ธ์˜ input์„ ouput์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ž์ฒด๊ฐ€ ์œ ์ฆˆ ์ผ€์ด์Šค์— ์˜์กด์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ทฐ ๋ชจ๋ธ์— ์ง์ ‘ ์‹œ๊ฐ„ ๊ฐ’์„ ์ฃผ๋Š” ๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•˜์ฃ .

 

๊ทธ๋Ÿผ ๊ฒฐ๊ตญ ๊ธฐ์กด ์œ ์ฆˆ ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

 

1. ์œ ์ฆˆ ์ผ€์ด์Šค๊ฐ€ ์ž˜๋ชป๋˜๋ฉด ๋ทฐ ๋ชจ๋ธ์— ๋Œ€ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ์˜ค์—ผ๋œ๋‹ค.

2. ๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ ์ผœ๋†“๊ณ  ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.

 

์œ ์ฆˆ ์ผ€์ด์Šค๋„ ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์ฝ”๋“œ์ธ๋ฐ ์ •์ƒ์ ์œผ๋กœ ๊ฐ’์ด ์ž˜ ๋ฐฉ์ถœ๋œ๋‹ค๊ณ  ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๊ทธ๋ฆฌ๊ณ  1์‹œ๊ฐ„์ด ๋„˜์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ํ•œ ์‹œ๊ฐ„ ๋™์•ˆ ์ผœ ๋‘๊ณ  ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ๋ง๋„ ์•ˆ ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. 

 

์ด๋Ÿฐ ์ƒํ™ฉ์„ ์œ„ํ•ด์„œ ์ €ํฌ๋Š” ์œ ์ฆˆ ์ผ€์ด์Šค๋ฅผ ํ”„๋กœํ† ์ฝœ๋กœ ํ•œ๋ฒˆ ๊ฐ์‹ธ ๋ทฐ ๋ชจ๋ธ์€ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์•Œ๊ณ  ๊ตฌ์ฒด ํƒ€์ž…์„ ์•Œ์ง€ ๋ชปํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ์š”! ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑํ•˜๋ฉด ์‹ค์ œ ์•ฑ์—์„œ๋Š” ๋‚ด๋ถ€๊ฐ€ ๋กœ์ง์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” DefaultUseCase๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํ…Œ์ŠคํŠธ์—์„œ๋Š” ์œ ์ฆˆ ์ผ€์ด์Šค๋กœ๋ถ€ํ„ฐ ๋‚˜์™€์•ผ ํ•  ๊ธฐ๋Œ“๊ฐ’๋งŒ ๋ฐฉ์ถœํ•˜๋Š” MockUseCase๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์‹ค์ œ๋กœ ์œ„ ๋ทฐ ๋ชจ๋ธ์—์„œ ์‹คํ–‰์‹œํ‚ค๋Š” ํƒ€์ด๋จธ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” Mock ๋ฉ”์„œ๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์›๋ž˜๋Š” ์—ฌ๊ธฐ์„œ ์‹ค์ œ ํƒ€์ด๋จธ๋ฅผ ์‹คํ–‰์‹œ์ผœ์„œ ํ”„๋กœํผํ‹ฐ์— ๊ฐ’์„ ๊ณ„์† ๋ฐฉ์ถœํ•ด์•ผ ํ•˜์ง€๋งŒ, Mock ๊ฐ์ฒด๋Š” ํ…Œ์ŠคํŠธํ•˜๊ณ ์ž ํ•˜๋Š” 10์ดˆ, ๊ทธ๋ฆฌ๊ณ  49000์ดˆ๋ฅผ ๋ฐฉ์ถœํ•˜๊ณ  ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. 

 

๋ทฐ ๋ชจ๋ธ์ด ๊ตฌ๋…ํ•˜๋˜ ๊ฐ’์€ 10, 49000์ด ๋“ค์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ์˜ ์š”์ฒญ์œผ๋กœ ๊ณง๋ฐ”๋กœ 10์ดˆ์— ๋Œ€ํ•œ ํฌ๋งท ๋ณ€ํ™˜๊ณผ 49000์— ๋Œ€ํ•œ ํฌ๋งท ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

 

Mock 

MockUseCase์ฒ˜๋Ÿผ ์„œ๋กœ ์˜์กด ๊ด€๊ณ„์— ์žˆ๋Š” ๋ ˆ์ด์–ด๋“ค์€ ๋ชจ๋‘ Mock๋ ˆ์ด์–ด๋ฅผ ์ œ๊ณตํ•ด์„œ ๊ธฐ๋Œ“๊ฐ’์„ ๋ฌด์กฐ๊ฑด ๋ฐฉ์ถœํ•˜๋„๋ก ํ•˜๊ณ  ์‹ค์ œ ํ…Œ์ŠคํŠธํ•˜๊ณ ์ž ํ•˜๋Š” ๋ ˆ์ด์–ด์— ์ง‘์ค‘ํ•˜๋„๋ก ํ…Œ์ŠคํŠธ๋ฅผ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋ทฐ ๋ชจ๋ธ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋Š” ๋ชจ๋‘ Mock ์œ ์ฆˆ ์ผ€์ด์Šค๋ฅผ ์ œ๊ณตํ•ด์„œ Input๊ณผ output์—๋งŒ ์ง‘์ค‘ํ•˜๊ณ , ์œ ์ฆˆ ์ผ€์ด์Šค์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋Š” Mock ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ๋ฅผ ํ†ตํ•ด ์‹ค์ œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—๋งŒ ์ง‘์ค‘ํ•ด ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋„๋ก ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ take(2) ์™œ ํ–ˆ๋ƒ๊ณ ..

์•„๊นŒ ์Šฌ์ฉ ๋„˜์–ด๊ฐ”๋˜ take(2)๋„ ์ด์ œ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”! 

 

์ด ํƒ€์ด๋จธ ๋ฉ”์„œ๋“œ๋Š” ํ•œ ๋ฒˆ์˜ ์‹คํ–‰๋งŒ์œผ๋กœ 10, 49000์„ ๋ชจ๋‘ ๋ฐฉ์ถœํ•˜๋Š”๋ฐ์š”,

 

์ด ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์—์„œ ํ™•์ธํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ๊ฒƒ์€ MM:SS๋กœ ์ž˜ ๋ฐ”๋€Œ๋Š” ์ง€์˜€๊ณ , HH:MM:SS๋Š” ๋ณ„๋„๋กœ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ฆˆ ์ผ€์ด์Šค์—์„œ ๋ฐฉ์ถœ๋˜๋Š” ์ดˆ๊ธฐ๊ฐ’, ๊ทธ๋ฆฌ๊ณ  10์ดˆ์— ๋Œ€ํ•œ ๊ฐ’๋งŒ ์ทจํ•ด์„œ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด take(2)๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค..!

 

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ

์ผ์ฃผ์ผ ๋™์•ˆ ํŒ€์›๋“ค ๋ชจ๋‘ ์—„์ฒญ๋‚˜๊ฒŒ ํž˜์„ ๋‚ธ ๋•๋ถ„์— 44๊ฐœ ์ค‘ 43๊ฐœ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ชจ๋‘ ๋งˆ์ณค์Šต๋‹ˆ๋‹ค.

๋ทฐ ๋ชจ๋ธ์€ ์ด๋ ‡๊ฒŒ 90% ์ด์ƒ์˜ ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ…Œ์ŠคํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ ,

์œ ์ฆˆ ์ผ€์ด์Šค๋„ ์ผ๋ถ€ ํŒŒ์ผ์„ ์ œ์™ธํ•˜๊ณ ๋Š” 90% ์ด์ƒ์˜ ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ „์ฒด ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ๋Š”

30%์˜ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋งŒ๋“ค๋ฉฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ข…๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๋งˆ๋ฌด๋ฆฌ

๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋‹ˆ, ์‹ค์ œ๋กœ ํ•„์š”๊ฐ€ ์—†๋Š” ํ•จ์ˆ˜์ธ๋ฐ ๊ตฌํ˜„์ด ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ณ , ํŒŒ์ผ ์„ค๊ณ„๊ฐ€ ์ž˜๋ชป๋œ ๊ฒฝ์šฐ๋„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๋ฉด ๋ถ€์ˆ˜์ ์ธ ํšจ๊ณผ๋กœ ์ข‹์€ ํ’ˆ์งˆ์˜ ์ฝ”๋“œ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ „์ฒด ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ์˜์—ญ๊นŒ์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๊ณ  ์‹ถ์€๋ฐ ์‹œ๊ฐ„ ์ƒ ํ•  ์ˆ˜ ์—†์—ˆ๋˜ ์ ์ด ์•„์‰ฝ๋„ค์š”ใ… 

 

์ด๋ ‡๊ฒŒ Rx๊ฐ€ ๋ชจ๋‘ ์ฒ˜์Œ์ธ ์šฐ๋ฆฌ ํŒ€์ด ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฒฝํ—˜ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ๊ณต์œ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋‚˜ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ๋” ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด ๊นƒํ—ˆ๋ธŒ์— ๋ฐฉ๋ฌธํ•ด์ฃผ์„ธ์š”! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

 

 

GitHub - boostcampwm-2021/iOS06-MateRunner: ํ•จ๊ป˜ ๋‹ฌ๋ฆฌ๋Š” ์ฆ๊ฑฐ์›€, Mate Runner ๐Ÿƒ๐Ÿป‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ

ํ•จ๊ป˜ ๋‹ฌ๋ฆฌ๋Š” ์ฆ๊ฑฐ์›€, Mate Runner ๐Ÿƒ๐Ÿป‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ. Contribute to boostcampwm-2021/iOS06-MateRunner development by creating an account on GitHub.

github.com