使用mock对象进行打桩测试

//导入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"

你可能感兴趣的:(使用mock对象进行打桩测试)