[Go] mockery: mock test ๋„๊ตฌ

mockery๋Š” mock ์ž๋™ํ™” ๋ณด์กฐ๋„๊ตฌ๋‹ค.
gomock๊ณผ ๋ผ์ด๋ฒŒ์ธ๊ฑฐ๊ฐ™๋‹ค.




์„ค์น˜

๋จผ์ € cli๋ฅผ ์„ค์น˜ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

go install github.com/vektra/mockery/v2@v2.32.0

์ด๋ ‡๊ฒŒ ์‹คํ–‰์ด ๋˜๋ฉด ์ž˜ ๊น”๋ฆฐ ๊ฒƒ์ด๋‹ค.




์˜ˆ์‹œ

Redis์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์—ฐ๋™ํ•˜๋‹ค๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๊ณตํ†ต์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‘๊ณ , ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  Real Redis ๋ฒ„์ „์„ ๊ตฌํ˜„ํ•œ๋‹ค. (์—ฌ๊ธฐ์„œ๋Š” ์ง„์งœ Redis์— ์—ฐ๋™์„ ํ•˜์ง€๋Š” ์•Š์•˜๋‹ค.)
์ด๊ฑธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋‘๋Š” ์ด์œ ๋Š” Mock ๊ฐ์ฒด๋ฅผ ๋‹คํ˜•์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

๊ทธ๋Ÿผ ์‚ฌ์šฉ๋„ ์ด๋Ÿฐ์‹์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž˜ ๋Œ์•„๊ฐ„๋‹ค.
๊ทผ๋ฐ ๋ฉ”์ธ ๋กœ์ง์€ ๋กœ์ง์ด๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ™์€ ์™ธ๋ถ€ ์š”์†Œ์— ๋Œ€ํ•œ ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋ ค๋ฉด ์ค€๋น„๋ฅผ ๋˜ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.




๋ฐฉ๋ฒ• 1: go generate ํ™œ์šฉ

go generate๋ฅผ ์จ์„œ Mock์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€ ์ธํ„ฐํŽ˜์ด์Šค ์œ„์—๋‹ค๊ฐ€ mockery cli ๋ช…๋ น์„ ์ ์ ˆํžˆ ๋„ฃ์–ด์ค˜์„œ

generate๋ฅผ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ƒ๊ธธ ๊ฒƒ์ด๋‹ค.




๋ฐฉ๋ฒ• 2: mockery.yaml ์‚ฌ์šฉ

์ €๋Ÿฐ mock ์ƒ์„ฑ์„ ์ค‘์•™ํ™”ํ•ด์„œ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ๋ƒฅ yaml์„ ์“ฐ๋Š” ํŽธ์ด ๊น”๋”ํ•˜๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ฃจํŠธ์—๋‹ค yaml์„ ์ž‘์„ฑํ•ด์ฃผ๊ณ 

mocker cli๋ฅผ ์‹คํ–‰ํ•˜๋ฉด

์„ค์ •ํ•œ๋Œ€๋กœ ๋ฑ‰์–ด์ค€๋‹ค.




Mock ์‚ดํŽด๋ณด๊ธฐ

Mock ์ƒ์„ฑ๋ฌผ์ด๋ผ ํ•ด๋ด์•ผ ์‚ฌ์‹ค ๋ณ„๊ฑฐ ์—†๋‹ค.
์›๋ณธ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ฐ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด์„œ empty ๊ตฌํ˜„์„ ๋‘๊ณ , ํ…Œ์ŠคํŠธ ์‹œ์ ์— ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋Ÿฐ ์˜๋ฏธ์—†๋Š” ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ๋“ค๋งŒ ์ž”๋œฉ ์žˆ๋‹ค.

์ด๊ฑธ ์ง์ ‘ ๋ถ„์„ํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•  ์ผ์€ ์—†๋‹ค. mockery cli๋กœ ์‹ฑํฌ๋งŒ ๊ณ„์† ๋งž์ถฐ์ฃผ๋ฉด ๋œ๋‹ค.




ํ…Œ์ŠคํŠธ ์ž‘์„ฑํ•˜๊ธฐ

๊ทธ๋Ÿผ ์ € mock ์ƒ์„ฑ๋ฌผ์„ ์ด์šฉํ•ด์„œ ๊ฐ„๋‹จํ•œ ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๊ฒ ๋‹ค.
mock ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , On์œผ๋กœ ๊ฐ ๋ฉ”์„œ๋“œ๊ฐ€ ์–ด๋–ค ์กฐ๊ฑด์œผ๋กœ ํ˜ธ์ถœ๋˜์—ˆ์„๋•Œ ์–ด๋–ค ๊ฐ’์ด ๋ฆฌํ„ด๋˜๋„๋ก ํ• ์ง€๋ฅผ ์ •์˜ํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ ์ดํ›„์—๋Š” ๊ทธ๋ƒฅ go test ๋‚ด์žฅ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.


์ž˜ ๋œ๋‹ค.



์ฐธ์กฐ
https://vektra.github.io/mockery/latest/