Golang:模拟具有相同方法名称的AWS服务

jackysatpal:

我正在使用两个AWS服务(Glue和DynamoDB),这两个服务都具有相同的方法名称,CreateTable因此在模拟这些服务时,我遇到了CreateTable is ambiguous错误。

胶水:CreateTable https://docs.aws.amazon.com/sdk-for-go/api/service/glue/#Glue.CreateTable

DynamoDB:CreateTable https://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/#DynamoDB.CreateTable

有什么办法解决这个问题?

码:

type UpdateWorkflow struct {
    glueIface glueiface.GlueAPI
    dbIface   dynamodbiface.DynamoDBAPI
    tableName string
}

func NewUpdateWorkflow(tableName string) *UpdateWorkflow {
    sess := sessions.NewSession()
    return &UpdateWorkflow{
        dbIface:   dynamodb.New(sess),
        glueIface: glue.New(sess),
        tableName: tableName,
    }
}

单元测试:

// MockUpdateWorkflow is a mock implementation of gluetestutils and dynamodb service
type MockUpdateWorkflow struct {
    glueiface.GlueAPI
    dynamodbiface.DynamoDBAPI
    mock.Mock
}

func setup() (*UpdateWorkflow, *MockUpdateWorkflow) {
    mockClient := new(MockUpdateWorkflow)
    mockServices := &UpdateWorkflow{
        glueIface: mockClient,
        dbIface:   mockClient,
        tableName: mockTableName,
    }
    return mockServices, mockClient
}
Burak Serdar:

如果存在冲突的函数名称,则无法嵌入接口,必须使用命名字段:

type MockUpdateWorkflow struct {
    g glueiface.GlueAPI
    d dynamodbiface.DynamoDBAPI
    mock.Mock
}

func setup() (*UpdateWorkflow, *MockUpdateWorkflow) {
    mockClient := new(MockUpdateWorkflow)
    mockServices := &UpdateWorkflow{
        glueIface: mockClient.g,
        dbIface:   mockClient.d,
        tableName: mockTableName,
    }
    return mockServices, mockClient
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Mockito模拟具有不同集合参数的相同方法调用

模拟具有不同返回值的相同方法

具有相同方法名称的两个接口-方法的实现

具有相同方法名称但限定符不同的Spring Bean无法加载

具有相同方法名称的多级继承c#

Kotlin继承-扩展具有相同方法名称的JVM类和接口

获取所有服务合同方法名称

具有不同方法名称的接口实现

Mockito模拟具有相似签名的相同命名方法

如何模拟具有参数的异步保护方法?

模拟具有静态方法的类时发生异常

使用Mockito模拟具有对象参数的方法

模拟具有ref参数的方法以返回特定值

无法模拟具有恒定默认参数的方法

无法模拟具有泛型参数的方法

Pytest:模拟具有相同side_effect的同一方法的多个调用

在不违反SOLID原则的情况下使用具有不同方法名称的子类

与Nock进行模拟,仅模拟具有相同主机的特定路由

具有DISTINCT ON的JpaRepository方法名称

在父类中与扩展类具有相同的方法名称

Kotlin-在重写中具有相同的方法名称时如何引用委托?

如何使“ this”指向外部类,其中内部类具有相同的方法名称

两种不同的类型类可以具有相同的方法名称吗?

模拟具有@Configuration批注的类

模拟具有多个键的表

如何在GNU Smalltalk中添加具有2个不同名称的相同方法?

谷歌模拟无法模拟具有模板化参数的方法

为什么Sinon模拟具有非函数的模拟方法?

如何在 Mockito 和 JUint 中模拟具有复杂请求的服务?