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

Mockery测试中如何忽略SubmittedAt参数值?

解决gomock测试中忽略特定结构体字段的问题

你遇到的问题是因为mock.Anything是无类型常量,无法直接赋值给*timestamppb.Timestamp类型的字段,导致类型不兼容报错。下面提供两种可行的解决方法:

方法一:使用mock.MatchedBy()自定义匹配逻辑

通过mock.MatchedBy()传入自定义函数,只校验你关心的字段,忽略SubmittedAt的值:

client.EXPECT().Process(param1, mock.MatchedBy(func(req *YourRequestStruct) bool {
    // 仅校验MemberId和UserId,SubmittedAt的值不做要求
    return req.Txn.MemberId == memberId && req.Txn.UserId == userId
})).Return(true, nil).Once()

注意将YourRequestStruct替换为你实际使用的请求结构体类型,函数内可根据需求添加更多字段校验。

方法二:使用mock.AnythingOfType()指定匹配类型

如果只需要确保SubmittedAt是正确类型(不关心具体值),可以用mock.AnythingOfType()传入目标类型的字符串标识:

client.EXPECT().Process(param1, &YourRequestStruct{
    Txn: &TxnStruct{
        MemberId: memberId,
        UserId: userId,
        // 匹配*timestamppb.Timestamp类型的任意值
        SubmittedAt: mock.AnythingOfType("*timestamppb.Timestamp"),
    },
}).Return(true, nil).Once()

需替换YourRequestStruct和TxnStruct为实际的结构体类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:29:56