gomock-Golang的官方mock工具

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

在线参考package 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

使用mock对象进行打桩测试

你可能感兴趣的:(gomock-Golang的官方mock工具)