戈莫克,去,芒果包,蒙哥诺克

  • 本文关键字:蒙哥 go gomock mongomock
  • 更新时间 :
  • 英文 :


我正在尝试使用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

---失败:测试(0.00s( mongomanager_test.go:20:失踪呼叫 *mocks.mockmongomanager.gets(等于cacargroup(/users/charles/workspace/src/bitbucket.org/bitbucket.org/tekion/tbaas/tbaas/mongangomanager/monganemanager/mongomanager_test.go:16 go:16 Mongomanager_test.go:20:由于缺少呼叫而导致的流产测试失败退出状态1

您实际上看到了接口中使用错误类型实现的接口中的方法。但是您正在使用像它没有返回并链接实施的。只需删除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)
}

相关内容

  • 没有找到相关文章

最新更新