我的测试始终失败,但使用no actual calls happened失败,但是我很确定func被调用了(这是一个日志记录功能,因此我可以在终端上看到日志)

基本上我有看起来像这样的代码:
common/utils.go

func LogNilValue(ctx string){
    log.Logger.Warn(ctx)
}
main.go
import (
"common/utils"
)

func CheckFunc(*string value) {
    ctx := "Some context string"
    if value == nil {
    utils.LogNilValue(ctx) //void func that just logs the string
   }
}
test.go
type MyMockedObject struct{
    mock.Mock
}

func TestNil() {
    m := new(MyMockedObject)
    m.Mock.On("LogNilValue", mock.Anything).Return(nil)
    CheckFunc(nil)
    m.AssertCalled(s.T(), "LogNilValue", mock.Anything)
}

我希望这能奏效,但随后,我会不断获得no actual calls happened。不知道我在做什么错。

最佳答案

LogNilValue应该具有MyMockedObject作为方法接收者,以便模拟该方法。像这样

func (*MyMockedObject)LogNilValue(ctx string) {
    log.Logger.Warn(ctx)
}
CheckFunc应该看起来像这样:
func CheckFunc(value *string, m *MyMockedObject) {
    ctx := "Some context string"
    if value == nil {
        m.LogNilValue(ctx) //void func that just logs the string
   }
}

最后是TestNil方法:
func TestNil() {
    m := new(MyMockedObject)
    m.Mock.On("LogNilValue", mock.Anything).Return(nil)
    CheckFunc(nil, m)
    m.AssertCalled(s.T(), "LogNilValue", mock.Anything)
}

关于go - Testify模拟正在返回断言该函数尚未被调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55830480/

10-14 02:18