You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang Testify Mock未返回指定值问题排查

Testify Mock配置不生效问题解决

你的问题出在Mock结构体的方法实现上——你写的伪实现直接返回了nil, nil,完全没用到Testify的Mock机制,所以不管怎么用On配置返回值,实际调用时都会走这个固定返回逻辑。

修正方法很简单,把Mock方法改成Testify要求的格式,让它接入Mock匹配逻辑:

type MockUserRepo struct {
  mock.Mock
}

func (m *MockUserRepo) FindByUsername(username string) (*User, error) {
    // 触发Testify的Mock参数匹配与返回值逻辑
    args := m.Called(username)
    // 将返回值转换为对应类型返回
    return args.Get(0).(*User), args.Error(1)
}

这样修改后,你原来的配置代码就能正常工作了:

m := NewMockUserRepo()
m.On("FindByUsername", mock.Anything).Return(&User{
    Username: "test"
}, nil)

svc := NewService(m)
user, err := svc.FindByUsername("anything") // 现在会返回{Username: "test"}, nil

核心逻辑是:Testify的Mock需要通过Called()方法来关联你用On()配置的规则,它会根据传入的参数匹配对应的返回值,而不是靠你写死的伪实现返回值。

内容的提问来源于stack exchange,提问作者Acha Bill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 07:06:32