-3

次のようなコードに対して、 stretchr/testifyを使用して単体テストを実行しようとしています。

func (c *MyClient) upsertData(data MyObject) {
    upsertToDatabase(data)
}

func doSomething(c *MyClient) {
    data1, data2 := getSomeData()
    c.upsertToDatabase(data1)
    c.upsertToDatabase(data2)
}

// Unit test.
func TestDoSomething(t *testing.T) {
    c := mock.MyClient{}
    doSomething(c)
    /* The following line checking for data1 upsert failed.
     * require.True(t, c.AssertCalled(t, "upsertToDatabase", mock.MatchedBy(func(data MyObject) bool { return data == MyObject{expectedObject1 /* data2 */}})) */
    require.True(t, c.AssertCalled(t, "upsertToDatabase", mock.MatchedBy(func(data MyObject) bool { return data == MyObject{expectedObject1 /* data2 */}}))
}

私は呼び出して、との両方が実際に期待される関数で呼び出されているAssertCalledことを確認したいと思います。しかし、関数の最後の呼び出し、つまり with でのみアサートできます。呼び出しをアサートする方法はありますか?data1data2data2data1

4

1 に答える 1