次のようなコードに対して、 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 でのみアサートできます。呼び出しをアサートする方法はありますか?data1
data2
data2
data1