Testify mock возвращает утверждение, что функция не была вызвана - PullRequest
0 голосов
/ 24 апреля 2019

Мои тесты продолжают проваливаться, но 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.Не уверен, что я здесь делаю не так.

1 Ответ

0 голосов
/ 25 апреля 2019

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)
}
...