[Go] testify/mock を使ってモックが呼び出された回数を確かめる
作成日: 2025年02月15日
testify/mock パッケージの AssertNumberOfCalls 関数を使用すると、モックとして作成した関数が期待通りの回数呼び出されたかを確かめることができます。
下記は AddNumbers 関数のモックを作成し、呼び出し回数を確認するテストコードです。
package main
import (
"testing"
"github.com/stretchr/testify/mock"
)
type Calculator struct {
mock.Mock
}
func (c *Calculator) AddNumbers(a int, b int) int {
args := c.Called(a, b)
return args.Int(0)
}
func TestAddNumbers(t *testing.T) {
calculator := new(Calculator)
calculator.On("AddNumbers", 3, 5).Return(8)
calculator.AddNumbers(3, 5)
calculator.AddNumbers(3, 5)
calculator.AssertNumberOfCalls(t, "AddNumbers", 2)
}
説明
Calculator構造体はmock.Mockを埋め込んでいます。AddNumbers関数はm.Called(a, b)を呼び出し、引数を記録します。calculator.On("AddNumbers", 3, 5).Return(8)で、AddNumbers関数が引数3と5で呼び出された場合に8を返すように設定します。calculator.AddNumbers(3, 5)を 2 回呼び出します。calculator.AssertNumberOfCalls(t, "AddNumbers", 2)で、AddNumbers関数が 2 回呼び出されたことを確認します。