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

如何使用testify为无入参无返回值的函数编写Mock实现?

使用Testify Mock实现无入参无返回值方法的正确方式

我正在对一段使用某接口的代码进行单元测试,该接口包含一个无入参、无返回值的方法。请问使用testify的mock包,编写该方法Mock实现的正确方式是什么?我当前的写法如下:

type A struct {
  mock.Mock
}

func (a *A) DoSomething() {
_ = a.Called(nil)
}

你的写法存在问题:Called(nil)会把nil当作一个参数传入,而原方法是无入参的,这会导致后续设置调用期望时出现不匹配的情况。

正确的写法是直接调用a.Called(),不需要传递任何参数——因为Called()接受可变参数,无入参场景下不传参数即可:

type A struct {
  mock.Mock
}

func (a *A) DoSomething() {
  a.Called() // 无入参时直接调用,无需传nil
}

在测试代码中,你可以这样设置和验证期望:

func TestYourLogic(t *testing.T) {
  mockObj := new(A)
  // 设置期望:DoSomething方法被调用一次
  mockObj.On("DoSomething").Once()

  // 执行被测试的业务逻辑(这里会触发mockObj.DoSomething())

  // 验证所有期望是否都被满足
  mockObj.AssertExpectations(t)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:22:05