用途:为 go-crypto-wallet 项目生成 Go 接口的 mock,适用于新增 internal/application/ports/ 接口、测试中需要替换手写 mock/stub、或为已有 ports 接口补充 mock 覆盖的场景。
主要能力:按约定把 mock 放在 infrastructure 层具体实现旁,路径规则为 ports/<layer>/<pkg>/ → infrastructure/<layer>/<pkg>/mocks/;通过 .mockery.yaml 声明接口,运行 make mockery 一次性重新生成全部 mock;生成文件命名 mock_<interface_name_snakecase>.go,结构体为 Mock<InterfaceName>,构造函数为 NewMock<InterfaceName>(t),包名 mocks,文件头含 // Code generated by mockery; DO NOT EDIT.。
使用方式:先在 ports 目录定位接口,按放置约定确定目标目录,在 .mockery.yaml 对应包条目下追加接口名(或新增包条目),执行 make mockery,再运行 make go-lint 与 make check-build 验证,最后把测试中的手写 stub 替换为 NewMock*(t) 加 .EXPECT() 调用。NewMock*(t) 会自动注册 t.Cleanup 调用 AssertExpectations,无需手动调用。
限制与例外:不要手动创建或编辑 mock 文件;不要覆盖全局设置(filename、structname、template、formatter)。Ethereumer、ETHTransactionSender(类型别名,应改用 TxSender mock)、usecase 接口、组合/聚合接口以及 ports 下 *_test.go 中的编译期一致性 stub 均不应加入 .mockery.yaml。验证命令包括 make mockery、make go-lint、make check-build,建议运行 make go-test。