为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法在多次调用函数时每次调用 AssertCalled

有没有办法在多次调用函数时每次调用 AssertCalled

Go
POPMUISE 2022-06-13 10:59:03
我正在尝试使用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验证两者确实是用预期的函数调用的。但是我只能在函数的最后一次调用中断言,即使用. 有什么方法或我可以用它来断言调用吗?data1data2data2data1
查看完整描述

1 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

文档中的示例:


/*

  Actual test functions

*/


// TestSomething is an example of how to use our test object to

// make assertions about some target code we are testing.

func TestSomething(t *testing.T) {


  // create an instance of our test object

  testObj := new(MyMockedObject)


  // setup expectations

  testObj.On("DoSomething", 123).Return(true, nil)


  // call the code we are testing

  targetFuncThatDoesSomethingWithObj(testObj)


  // assert that the expectations were met

  testObj.AssertExpectations(t)



}

看起来您可以调用.On任意次数来记录任意数量的“以这种方式和这种方式调用”的期望。


我只是阅读源代码,真的。打赌它会比在 SO 上发帖更快。


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信