[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 回呼び出されたことを確認します。