GoMock安装步骤
安装GoMock需要使用go命令行工具。步骤如下:
- 在终端输入以下命令,用于安装GoMock:
go get github.com/golang/mock/gomock
go install github.com/golang/mock/mockgen
这条命令会自动使用go工具安装GoMock和Mockgen。
- 接下来,需要为GoMock创建mock生成器。输入以下命令:
mockgen -source=源代码文件 -destination=mock代码生成路径
其中,源代码文件
是需要为其生成mock代码的文件路径,mock代码生成路径
则是mock代码生成器的输出目录。
- 最后,使用GoMock生成mock代码,使用以下例子进行测试:
package main
import (
"testing"
"github.com/golang/mock/gomock"
mock "github.com/你的GitHub/name/mock" //将生成的mock代码导入到测试文件中
)
func TestFunc(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockObj := mock.NewMockXXX(mockCtrl) //利用生成的mock代码创建模拟对象
mockObj.EXPECT().XXXFunc("input").Return("output") //设置测试用例
if result := Func(mockObj); result != "output" {
t.Errorf("Func()输出有误,期望输出为:output,但实际输出为:%s", result)
}
}
其中,XXX
是需要生成mock代码的结构体名称,XXXFunc("input").Return("output")
定义了mock对象的测试用例,Func(mockObj)
则是测试方法。
在命令行中输入go test
命令即可运行测试代码,如运行成功,即为GoMock安装成功。
示例代码
下面是生成mock代码的例子,以文件io.go为例:
// io.go
package main
import (
"io/ioutil"
"os"
)
func ReadDataFromFile(filename string) ([]byte, error) {
data, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
return data, nil
}
func WriteDataToFile(filename string, data []byte) error {
err := ioutil.WriteFile(filename, data, os.ModePerm)
if err != nil {
return err
}
return nil
}
在终端输入以下命令生成mock代码:
mockgen -source=io.go -destination=mock/mock_io.go
执行成功后,可以在mock文件夹下找到生成的mock_io.go文件。
接下来是测试代码:
// io_test.go
package main
import (
"testing"
"github.com/golang/mock/gomock"
mock "github.com/你的GitHub/name/mock"
)
func TestReadDataFromFile(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockObj := mock.NewMockIoutil(mockCtrl)
mockObj.EXPECT().ReadFile("testfile").Return([]byte("{hello world}"), nil)
if _, err := ReadDataFromFile("testfile"); err != nil {
t.Errorf("读取文件错误:%v", err)
}
}
func TestWriteDataToFile(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockObj := mock.NewMockIoutil(mockCtrl)
mockObj.EXPECT().WriteFile("writefile", []byte("{hello world}"), os.ModePerm).Return(nil)
if err := WriteDataToFile("writefile", []byte("{hello world}")); err != nil {
t.Errorf("写入文件错误:%v", err)
}
}
以上就是 GoMock安装使用的详细攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:go语言中GoMock安装使用详解 - Python技术站