drxyaox153896 2017-06-05 08:42
浏览 95
已采纳

AssertCalled总是在testify库中失败

I am using testify to test my code and I want to check if a function was called.

I am doing the following:

type Foo struct {
    mock.Mock
}

func (m Foo) Bar() {

}

func TestFoo(t *testing.T) {
    m := Foo{}
    m.Bar()
    m.AssertCalled(t, "Bar")
}

The error I am getting:

Error:      Should be true
Messages:   The "Bar" method should have been called with 0 argument(s), but was not.

mock.go:419: []

I call function "Bar" and immediately ask if it was called but it returns false. What am I doing wrong? What is the proper way to test if a function was called with testify?

  • 写回答

2条回答 默认 最新

  • dongmangsha7354 2017-06-11 13:14
    关注

    I tried with this and works:

    type Foo struct {                                                                                                                                                    
        mock.Mock                                                                                                                                                          
    }                                                                                                                                                                    
    
    func (m *Foo) Bar() {                                                                                                                                                
        m.Called()                                                                                                                                                         
    }                                                                                                                                                                    
    
    func TestFoo(t *testing.T) {                                                                                                                                         
        m := &Foo{}                                                                                                                                                        
        m.On("Bar").Return(nil)                                                                                                                                            
    
        m.Bar()                                                                                                                                                            
        m.AssertCalled(t, "Bar")                                                                                                                                           
    }
    

    As stated by Chris Drew, you've to use a receiver pointer on Bar method's declaration.

    Additionally, you've to istantiate a new structure as pointer and mock the method to return a value.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)