💬

【Go言語】go generateでgomockを一括で生成してみた

2023/11/05に公開

はじめに

初めまして。eisukeです。
MidraLabというコミュニティでゲーム開発者が誰でも簡単にサーバーを建てられるようなOSSプロジェクトを始めていてその一環の開発で発見したことや導入したことをブログに書き留めています!
https://twitter.com/midra_lab

今回は...

CIに組み込んで自動でmockを生成したかったので調べていたらgo generateで指定の.goのmockを作成できることが分かったので実際にやってみました。

今回のプロジェクト

https://github.com/MidraLab/basic-game-server-with-mysql

gomockセットアップ

Install
https://github.com/uber-go/mock

go install go.uber.org/mock/mockgen@latest

mockを作成したいinterfaceの上に指定のコマンドをコメントのように書きこむ

//go:generate mockgen -source=handler_interface.go -destination=../../mocks/handler_mock.go -package=mocks
type UserHandlerInterface interface {
	UserCreateHandle() bunrouter.HandlerFunc
	UserGetHandle() bunrouter.HandlerFunc
	ScoreUpdateHandle() bunrouter.HandlerFunc
	UserRankingGetHandle() bunrouter.HandlerFunc
	DestroyHandle() bunrouter.HandlerFunc
}

実行

rootプロジェクトに移動

PS D:\Samples\basic-game-server-with-mysql3> cd app
PS D:\Samples\basic-game-server-with-mysql3\app> 

go generateする

PS D:\Samples\basic-game-server-with-mysql3\app> go generate ./...

以下のように自動で生成されることが確認できます!!

まとめ

go generateの可能性にはとてもワクワクしています。いろんなことが自動化できそうだと感じました!実際にこれをCIに導入してテストを自動生成するところまで頑張っていきたいと思います。

MidraLab(ミドラボ)

Discussion