doc.dev1x.org

gomockを使用してモックを作成する

gomock とは

インストール

$ go install go.uber.org/mock/mockgen

使い方

コマンド

$ mockgen -source=[対象] -destination=[出力先]
$ mockgen -source=example.go -destination=mock_example.go

Mockの使い方

func TestExample(t *testing.T) {
    // モックの呼び出しを管理するControllerを生成
    mockCtrl := gomock.NewController(t)
    defer mockCtrl.Finish()

    // モックの生成
    mockExample := mock_example.NewMockExample(mockCtrl)
    // テスト中に呼ばれるべき関数と帰り値を指定
    mockExample.EXPECT().F().Return(nil)
}

オプション

参考資料

Appendix-1 go:generateタグを用いたモックの自動生成

//go:generate mockgen -source=$GOFILE -destination=../mock/$GOPACKAGE/$GOFILE

package example

type Example interface {
    Hello() (string, error)
}
$ go generate ./...