已有代码如何打测试桩

原有一些方法 ,没有接口也没有对象
func GetShopMemberAccountContactByShopMemberId(shopMemberId int64) *accountProto.Contact {
    vendorContactPerson, _ := GetContactPersonByShopMemberId(shopMemberId)
    if vendorContactPerson != nil {
       accountContactResult, _ := AccountClient.ContactSearch(context.Background(), &accountProto.AccountContactSearchRequest{
          AccountTypes:    []string{"shop"},
          ContactStringId: vendorContactPerson.ContactId,
       })
       if accountContactResult != nil && len(accountContactResult.List) == 1 {
          return accountContactResult.List[0]
       }
    }
    return &accountProto.Contact{}
}

func GetContactPersonByShopMemberId(id int64) (*connectionProto.ContactPerson, error) {
    return ConnectionClient.ContactPersonGetByShopMemberId(context.Background(), &connectionProto.IDRequest{ID: id})
}

抽取接口

type RpcIface interface {
    GetShopById(shopId int64) (connectionProto.ContactShopInfo, error)

    GetShopMemberAccountContactByShopMemberId(shopMemberId int64) *accountProto.Contact

    GetContactPersonByShopMemberId(id int64) (*connectionProto.ContactPerson, error)

改造原实现

type Rpcli struct {
    basedto.BaseEntitySingle
}

func NewRpcli() *Rpcli {
    return &Rpcli{}
}
func  (r Rpcli)  GetShopById(shopId int64) (connectionProto.ContactShopInfo, error) {

    return rpcClient.GetShopById(shopId)
}

func (r Rpcli) GetShopMemberAccountContactByShopMemberId(shopMemberId int64) *accountProto.Contact {
    //TODO implement me
    return rpcClient.GetShopMemberAccountContactByShopMemberId(shopMemberId)
}

func (r Rpcli) GetContactPersonByShopMemberId(id int64) (*connectionProto.ContactPerson, error) {
    //TODO implement me
    return rpcClient.GetContactPersonByShopMemberId(id)
}

实现测试桩

import (
    "git.ichub.com/general/webcli120/goconfig/base/basedto"
    "git.ichub.com/general/webcli120/goconfig/ichublog/golog"
    "icd/plugins/rpcClient"
    accountProto "icd/proto/account"
    connectionProto "icd/proto/connection"
    generalProto "icd/proto/general"
)

type RpcMock struct {
    basedto.BaseEntitySingle
}

func NewRpcMock() *RpcMock {
    return &RpcMock{}
}
func (r RpcMock) GetShopById(shopId int64) (connectionProto.ContactShopInfo, error) {
    golog.Info(" RpcMock GetShopById !")
    return connectionProto.ContactShopInfo{}, nil
}

func (r RpcMock) GetShopMemberAccountContactByShopMemberId(shopMemberId int64) *accountProto.Contact {
    //TODO implement me
    return rpcClient.GetShopMemberAccountContactByShopMemberId(shopMemberId)
}

func (r RpcMock) GetContactPersonByShopMemberId(id int64) (*connectionProto.ContactPerson, error) {
    //TODO implement me
    return rpcClient.GetContactPersonByShopMemberId(id)
}

func (r RpcMock) AccountContactIdObtain(shopId int64) (int64, error) {
    //TODO implement me
    return rpcClient.AccountContactIdObtain(shopId)
}

func (r RpcMock) GetBillCompanyByShopId(ShopId int64) (string, string, error) {
    //TODO implement me
    panic("implement me")
}

func (r RpcMock) ContactShopMemberQuery(shopMemberId int64) (string, error) {
    //TODO implement me
    panic("implement me")
}使用接口
package rpcfactroy

import (
    "git.ichub.com/general/webcli120/goconfig/ichublog/golog"
    "icd/plugins/rpcClient/rpcfactroy/rpciface"
    "icd/plugins/rpcClient/rpcfactroy/rpcli"
    "icd/plugins/rpcClient/rpcfactroy/rpcmock"
)

/*
@Title    文件名称: rpcfactroy.go
@Description  描述:

@Author  作者: [email protected]  时间(2024-02-18 22:38:21)
@Update  作者: [email protected]  时间(2024-02-18 22:38:21)
*/
var IfTestCmsMock bool = false

func InitMock() {
    IfTestCmsMock = true

    golog.Info("start  gomock IfTestCmsMock = ", IfTestCmsMock)
}
func RpcClient() rpciface.RpcIface {
    if IfTestCmsMock {

       return rpcmock.FindBeanRpcMock()
    }
    return rpcli.FindBeanRpcli()

}

猜你喜欢

转载自blog.csdn.net/leijmdas/article/details/143515457