询问AWS SDK for Go V2是否提供DynamoDB对应接口
AWS SDK for Go V2的DynamoDB抽象接口方案
AWS SDK for Go V2不再像V1那样提供单独的dynamodbiface包,而是通过原生的接口设计来支持依赖注入和测试场景:
- V2的
dynamodb.Client本身就实现了对应操作的接口,所有DynamoDB的核心操作(如GetItem、PutItem、Scan等)都是客户端类型的方法,你可以直接将客户端抽象为dynamodb.Client的接口类型,或者根据业务需求定义更细粒度的自定义接口。 - 针对测试场景,官方推荐利用Go的接口特性自行封装抽象层,或者使用SDK内置的测试工具来创建模拟客户端。比如你可以定义一个只包含业务所需操作的接口:
type DynamoDBService interface { GetItem(ctx context.Context, params *dynamodb.GetItemInput, opts ...func(*dynamodb.Options)) (*dynamodb.GetItemOutput, error) PutItem(ctx context.Context, params *dynamodb.PutItemInput, opts ...func(*dynamodb.Options)) (*dynamodb.PutItemOutput, error) }
之后业务代码依赖这个DynamoDBService接口,而非具体的dynamodb.Client,这样在测试时就能方便地传入模拟实现。
内容的提问来源于stack exchange,提问作者Woody1193
相关产品推荐
相关产品推荐

