Я пытаюсь выполнить модульный тест с помощью 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
и проверить, что оба data1
и data2
действительно вызываются с ожидаемой функцией. Но я могу утверждать только с последним вызовом функции, то есть с data2
. Есть ли способ или как я могу подтвердить звонок с помощью data1
?