我的测试一直失败,但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
。不知道我在这里做错了什么。
答案 0 :(得分:0)
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)
}