[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 ๋ด์ฅ๊ธฐ๋ฅ์ ์ด์ฉํด์ ํ
์คํธ๋ฅผ ์ํํ๋ฉด ๋๋ค.
์ ๋๋ค.