mockgenとは?
Goでモックを作成するためのパッケージです。
※ golang/mock/mockgen
はアーカイブされているため、使用するのはgo.uber.org/mock/mockgen
になります。
インストールは以下のコマンド
go install go.uber.org/mock/mockgen@latest
モックを作成する際は、以下のコマンドのように一つづつ作成するが、正直めんどくさいですよね😇
mockgen -source=foo.go [other options]
という事で、対象ディレクトリ内のファイルを全てモック化してもらいましょう😎
ディレクトリ内のファイルから一度にモックを作成するスクリプト
#!/bin/bash -eu
# 環境変数設定
ROOT=対象のルート
MOCK_DATA_ROOT="モックを格納するディレクトリ"
# ROOTのモック化したいファイルのあるディレクトリ一覧
# この例では、usecaseとrepositoryディレクトリ配下のファイルを指定
SEARCH_DIR_LIST="
domain/repository
usecase
"
echo "Start..."
cd ${ROOT}
for dir in ${SEARCH_DIR_LIST}; do
# test.go以外のgoファイルを対象のディレクトリから探す
file_path_list=$(find ./${dir} -type f -not -name "*_test.go" -name "*.go")
for file_path in ${file_path_list}; do
# file_pathからモック作成
mockgen -package mock -source=./$file_path -destination=./$MOCK_DATA_ROOT/$file_path
done
done
echo "Done."