client.go:
package rpc //go:generate mockery -name=Client type Client interface { Get(key string) (data interface{}, err error) } type ClientImpl struct { Ct Client } func (p *ClientImpl) Get(key string) (data interface{}, err error) { if mockCondition { return p.Ct.Get(key) } // real logic } 复制代码
client_test.go
package rpc import ( "fmt" "test/mocktest/mocks" "testing" ) type User struct { Age int Name string } func TestMock(t *testing.T) { convey.Convey("TestMock", t, func() { mc := &mocks.Client{} var u = &User{Age: 15, Name: "alice"} mc.On("Get", "alice").Return(u, nil) ci.Ct = mc data, err := ci.Get("alice") convey.So(data.Age, convey.ShouldEqual, 15) }
本文来自:51CTO博客
感谢作者:mob604756e80bb7
查看原文:golang基础-单元测试与mock
相关阅读 >>
更多相关阅读请进入《Go》频道 >>

Go语言101
一个与时俱进的Go编程知识库。