//导入mock相关包
//每个测试函数必须导入testing包
import (
"testing"
. "github.com/golang/mock/gomock"
"test/mock/db"
...
)
//测试函数的名字必须以Test开头,可选的后缀名必须以大写字母开头
//其中t参数用于报告测试失败和附加的日志信息。
func TestMyThing(t *testing.T) {
//mock控制器
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
//mock对象创建时需要注入控制器,如果有多个mock对象则注入同一个控制器
mockObj := something.NewMockMyInterface(mockCtrl)
//mock对象的行为注入
mockObj.EXPECT().SomeMethod(4, "blah")
// pass mockObj to a real object and play with it.
}
gomock
go test
go test命令如果没有参数指定包那么将默认采用当前目录对应的包(和go build命令一样)。我们可以用下面的命令构建和运行测试。
参数-v可用于打印每个测试函数的名字和运行时间:
参数-run对应一个正则表达式,只有测试函数名被它正确匹配的测试函数才会被go test测试命令运行:如:$ go test -v -run="French|Canal"