gpt4 book ai didi

gomock, Go,芒果包,MongoMock

转载 作者:IT王子 更新时间:2023-10-29 02:21:11 24 4
gpt4 key购买 nike

我正在尝试使用 gomock 模拟以下方法

func GetS(tenantName string) (*mgo.Session, error) {
ctx := apiContext.TContext{}
url, err := connectionURLList.get(tenantName)
if err != nil {
log.GenericWarning(ctx,
fmt.Sprintf("connection to %s not yet created, creating one: %v", tenantName, err), nil)
if err := connectMongo(tenantName); err == nil {
return GetS(tenantName) //singleton recursion to again call GetS
}
return nil, err
}
// ignoring error, expected we will always setting session in session map
session, _ := connectionList.get(url)
return session.Copy(), err
}

我的界面

type MongoManager interface {
GetS(tenantName string)
}

func TestGetS(t *testing.T) {
//var mgoCall *mgo.Session
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockManagerObj := mocks.NewMockMongoManager(mockCtrl)
mockManagerObj.EXPECT().GetS("cacargroup").Return(nil)
}

我收到以下错误。有人可以帮忙吗

 $ go test

--- FAIL: TestGetS (0.00s) mongoManager_test.go:20: missing call(s) to *mocks.MockMongoManager.GetS(is equal to cacargroup) /Users/charles/workspace/src/bitbucket.org/tekion/tbaas/mongoManager/mongoManager_test.go:16 mongoManager_test.go:20: aborting test due to missing call(s) FAIL exit status 1

最佳答案

您实际上看到接口(interface)中的方法是用错误的返回类型实现的。但是您正在使用它,就像它不返回任何内容并链接实现一样。只需删除 GetS 的返回类型即可。

type fn func(string) (*mgo.Session, error)

type MongoManager interface {
NewFunction(GetS, "cascade")
}

func TestGetS(t *testing.T) {
//var mgoCall *mgo.Session
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockManagerObj := mocks.NewMockMongoManager(mockCtrl)
mockManagerObj.EXPECT().GetS("cacargroup").Return(nil)
}

此外,您还必须将其从 GetS 函数中删除

func NewFunction(GetS fn, value string){
GetS("cascade")
}

func GetS(tenantName string) (*mgo.Session, error){
ctx := apiContext.TContext{}
url, err := connectionURLList.get(tenantName)
if err != nil {
log.GenericWarning(ctx,
fmt.Sprintf("connection to %s not yet created, creating one: %v", tenantName, err), nil)
if err := connectMongo(tenantName); err == nil {
return GetS(tenantName) //singleton recursion to again call GetS
}
return nil, err
}
// ignoring error, expected we will always setting session in session map
session, _ := connectionList.get(url)
}

关于gomock, Go,芒果包,MongoMock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48946174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com