[Go] gomock を使って特定の関数の返り値を変更する

作成日: 2022年11月02日

Return 関数を使用することで、モックとして作成した関数の返り値を任意の値に変更することができます。

まずテスト対象の AddNumbers 関数をインターフェースで定義します。

package main

type DummyInterface interface {
    AddNumbers(a int, b int) int
}

次にテストコードを作成します。

package main

import (
    "testing"

    "github.com/golang/mock/gomock"
)

func TestAddNumbers(t *testing.T) {
    ctrl := gomock.NewController(t)
    defer ctrl.Finish()
    mockDummy := NewMockDummyInterface(ctrl)
    mockDummy.EXPECT().AddNumbers(gomock.Any(), gomock.Any()).Return(10)

    n := mockDummy.AddNumbers(3, 5)

    if n != 10 {
        t.Fatal("n is not 10")
    }
}

説明

  • mockDummy.EXPECT().AddNumbers(gomock.Any(), gomock.Any()).Return(10) で、AddNumbers 関数が任意の引数で実行され、10 を返すように挙動を書き換えます。
  • モックとして作成された mockDummyAddNumbers 関数を実行し、返り値が 10 であることを確かめます。
  • このテストは PASS となります。モックとして作成した AddNumbers 関数が 10 を返していることを確認できました。
Go