[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 関数が引数 35 で呼び出された場合に 8 を返すように設定します。
  • calculator.AddNumbers(3, 5) を 2 回呼び出します。
  • calculator.AssertNumberOfCalls(t, "AddNumbers", 2) で、AddNumbers 関数が 2 回呼び出されたことを確認します。

参考

Go