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

如何在Ginkgo中获取Mock函数InsertOneProspecto的入参

获取gomock中InsertOneProspecto函数的调用入参

基于你使用的Golang v1.19.2、onsi/ginkgo/v2 v2.1.4和golang/mock v1.6.0,要获取传递给Mock的InsertOneProspecto函数的入参,可通过gomock提供的*gomock.Call对象的Calls属性实现,以下是修正后的完整示例:

// 初始化mock控制器与mock实例
ctrl := gomock.NewController(GinkgoT())
defer ctrl.Finish() // 确保测试结束时验证所有mock期望
mockDB := mock.NewMockPersistence(ctrl)

// 设置期望调用并保存对应的Call对象
callInsert := mockDB.EXPECT().InsertOneProspecto(gomock.Any()).Return("1098101810", nil)

// 执行被测程序逻辑
// ...(此处调用你的业务代码)

// 提取调用入参
var myArg dom.Prospect
// 从第一次调用记录中获取第一个参数,注意类型断言
if len(callInsert.Calls) > 0 {
    arg, ok := callInsert.Calls[0].Arguments[0].(dom.Prospect)
    if ok {
        myArg = arg
        // 此处可对myArg进行断言或后续验证操作
    }
}

关键说明

  • callInsert.Calls是调用记录数组,每个元素对应一次InsertOneProspecto的实际调用
  • Arguments[0]对应函数的第一个入参,需根据实际参数顺序调整索引
  • 必须用类型断言将空接口转换为目标类型dom.Prospect,避免类型错误
  • 先检查callInsert.Calls长度,防止因mock未被调用导致索引越界

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:40:39