GoMock是Go编程语言的模拟框架。它与Go的内置测试包很好地集成,但也可以在其他环境中使用。
gomock主要包含两个部分:"gomock库"和“ 辅助代码生成工具mockgen”
Installation
Once you have installed Go 【已设置$GOPATH/bin】, run these commands to install the gomock
package and the mockgen
tool:
go get github.com/golang/mock/gomock
go install github.com/golang/mock/mockgen
获得帮助
go doc github.com/golang/mock/gomock
mockgen工具--生成mock类文件
mockgen有两种操作模式:source and reflect(源文件和反射)
源模式
通过包含interface定义的文件生成mock类文件,通过 -source 标识生效,-imports 和 -aux_files 标识在这种模式下也是有用的。
Example:
mockgen -source=foo.go [other options]
反射模式
通过构建一个程序用反射理解接口生成一个mock类文件,
它通过传递两个非标志参数来启用:导入路径和逗号分隔的符号列表(多个interface)。
Example:
mockgen database/sql/driver Conn,Driver
//注意:第一个参数是基于GOPATH的相对路径,第二个参数可以为多个interface,并且interface之间只能用逗号分隔,不能有空格。
mockgen支持的选项如下:
- -source:指定接口文件
- -destination: 生成的mock类代码的文件。如果你没有设置这个选项,代码将被打印到标准输出
- -aux_files:接口文件不止一个文件时附加文件
- -build_flags: 传递给build工具的参数
一般用-source。复杂场景下,如定义多个interface(仅对部分interface进行mock),interface存在嵌套,需用反射模式。
案例:
案例1:
mockgen -destination spider/mock_spider.go -package spider -source spider/spider.go
案例2:
mockgen -package=mocks -destination model/repository/mocks/redis_repository.go github.com/api/model/repository IRedisgRepository
网友评论