模拟无法按预期工作 go lang

问题描述 投票:0回答:1

我遇到以下错误

assert: mock: I don't know what to return because the method call was unexpected.
        Either do Mock.On("Send").Return(...) first, or remove the Send() call.
        This method was unexpected:
                Send(services.ConfirmAccountEmail,repository.User)

邮件界面:

type Mailer interface {
    Send(email Email, receiver User) error
}

电子邮件也是一个界面

测试:

type MockMailer struct {
    mock.Mock
}

func (m *MockMailer) Send(email Email, receiver User) error {
    args := m.Called(email, receiver)
    return args.Error(0)
}

测试中:

mailer := new(MockMailer)
mailer.On("Send", mock.Anything, mock.Anything).Return(nil)

//Execute the code that is calling send method

调试显示进入了send方法,但我还是出现这个错误

会不会是界面造成了问题? 或者也许是嘲笑。有什么吗?

谢谢

go mocking testify
1个回答
0
投票

实现的方法好像和接口里的不一样;参数类型不同:

Send(email Email, receiver User) error
!=
Send(services.ConfirmAccountEmail,repository.User)

您可能想检查测试结构中的实现结构是否使用正确的参数类型实现了您的接口。

我们缺乏信息来帮助您解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.