mockery配置详解:20个参数让你的Mock更智能
【免费下载链接】mockery A mock code autogenerator for Go 项目地址: https://gitcode.com/gh_mirrors/moc/mockery
mockery是一个强大的Go语言Mock代码自动生成工具,它通过灵活的配置选项让单元测试变得更加智能和高效。本文将详细介绍mockery的20个核心配置参数,帮助你充分发挥这个工具的全部潜力。
🎯 基础配置快速上手
开始使用mockery非常简单,只需在项目根目录创建.mockery.yaml文件:
with-expecter: true
packages:
github.com/your-org/your-go-project:
config:
interfaces:
Foo:
config:
这个基本配置启用了expecter功能,为后续的高级配置打下基础。
📋 20个核心配置参数详解
1. 智能Mock生成参数
all - 自动发现包内所有接口
- 默认值:
false - 功能:自动扫描指定包中的所有接口并生成对应的Mock
include-regex - 正则表达式过滤
- 默认值:
"" - 功能:只生成匹配正则表达式的接口名称
exclude-regex - 排除特定接口
- 默认值:
"" - 功能:与
include-regex配合使用,进一步筛选要生成的Mock
2. 文件输出控制参数
filename - 自定义文件名模板
- 默认值:
"mock_{{.InterfaceName}}.go" - 支持模板变量:
InterfaceName、PackageName等
dir - 输出目录配置
- 默认值:
"mocks/{{.PackagePath}}" - 示例:
"{{.InterfaceDir}}"- 将Mock生成在接口文件旁边
inpackage - 同包生成模式
- 默认值:
false - 功能:将Mock生成在与原始接口相同的包中
3. Mock结构体配置
mockname - Mock结构体命名
- 默认值:
"Mock{{.InterfaceName}}" - 优势:避免循环导入问题
4. 包管理相关参数
outpkg - 输出包名
- 默认值:
"{{.PackageName}}" - 用途:控制生成的Mock文件的包名
packages - 包级配置(新版本推荐)
- 特点:提供5倍性能提升,更细粒度的控制
5. 高级功能参数
with-expecter - Expecter结构体生成
- 默认值:
true - 功能:生成类型安全的期望方法
replace-type - 类型替换
- 功能:解决类型别名指向内部包的问题
- 格式:
originalPackagePath.originalTypeName=newPackageName:newPackagePath.newTypeName
6. 构建和兼容性参数
mock-build-tags - 构建标签
- 默认值:
"" - 用途:为生成的Mock设置构建约束
boilerplate-file - 文件头模板
- 功能:在所有生成的Mock文件顶部添加自定义内容(如许可证)
7. 调试和测试参数
dry-run - 预览模式
- 默认值:
false - 功能:显示将要执行的操作但不实际执行
🚀 实用配置示例
智能包扫描配置
packages:
github.com/user/project:
config:
recursive: true
with-expecter: true
这个配置让mockery自动发现项目中的所有子包,无需手动指定每个包路径。
接口过滤配置
packages:
github.com/user/project:
config:
recursive: true
include-regex: ".*Client"
只生成以"Client"结尾的接口Mock,非常适合大型项目。
类型替换实战
当遇到类型别名指向内部包的问题时:
replace-type:
- "cloud.google.com/go/internal/pubsub=cloud.google.com/go/pubsub"
这个配置解决了Google Cloud PubSub等常见库的Mock生成问题。
💡 最佳实践建议
- 优先使用
packages配置 - 新版本提供更好的性能和功能 - 启用
with-expecter- 获得类型安全的测试体验 - 合理使用模板变量 - 灵活控制Mock文件的命名和位置
🎉 总结
通过合理配置mockery的20个参数,你可以:
- 大幅提升Mock生成速度
- 实现更精确的接口过滤
- 解决复杂的类型依赖问题
- 获得更智能的测试体验
掌握这些配置技巧,你的Go单元测试将变得更加高效和可靠!
【免费下载链接】mockery A mock code autogenerator for Go 项目地址: https://gitcode.com/gh_mirrors/moc/mockery
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




