Go中的DynamoDB SDK单元测试



我在Go中使用AWS SDK,但在单元测试DynamoDB更新时遇到了问题。基本上,我使用gomock来设置预期的UpdateItemInput,如下所示:

return m.EXPECT().UpdateItemWithContext(
gomock.Any(),
&dynamodb.UpdateItemInput {
ConditionExpression: aws.String("(#0 = :0) AND (#1 = :1)"),
ExpressionAttributeNames: map[string]*string{
"#0": aws.String("PK"),
"#1": aws.String("SK"),
"#2": aws.String("SomeAttrName"),
},
ExpressionAttributeValues: map[string]*dynamodb.AttributeValue {
":0": {S: aws.String(primaryKey)},
":1": {S: aws.String(secondaryKey)},
":2": {S: aws.String(ValueToUpdate)},
},
Key: map[string]*dynamodb.AttributeValue{
"PK": {S: aws.String(primaryKey)},
"SK": {S: aws.String(secondaryKey)},
},
ReturnValues:     aws.String(dynamodb.ReturnValueAllNew),
TableName:        aws.String(dynamo.TableName),
UpdateExpression: aws.String("SET #2 = :2n"),
}

然而,当我运行测试时,它失败了,因为gomock的期望和结果之间似乎不匹配。每次运行测试时,来自业务逻辑的UpdateItemInput中的值的位置都不同,我认为这就是造成问题的原因。

在Go中有更好的方法来测试这样的东西吗?或者,如果没有,是否有办法每次都执行相同的命令,或者忽略该命令?

看看Github:中的GO单元测试示例

https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/gov2/dynamodb/ScanItems

最新更新