登录
首页 >  Golang >  Go问答

如何为 dynamodbattribute.unmarshal 函数编写模拟

来源:stackoverflow

时间:2024-04-06 22:42:32 332浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《如何为 dynamodbattribute.unmarshal 函数编写模拟》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

假设我有一个函数可以更新 ddb 中的项目并解组对象,如下所示。

func update(ddbClient) {
    updatedItem, err := ddbClient.updateItem(...)
    obj := new(MyCustomObj)
    err := dynamodbattribute.UnMarshalMap(updatedItem.Attributes, &obj)
    if err != nil {
     fmt.println("Error while unmarshalling")
   }
}

现在我需要编写一个模拟测试,以便 unmarshalmap 抛出错误,然后我可以为此编写一个测试。

请注意,我已经有一个 updateitem 的模拟,但它不能抛出非法 json,因为它可能会在我不想的地方中断。


正确答案


您可以定义自己的接口结构来解析 dynamo 对象,然后模拟它。

type ItemParser interface {
   UnmarshalMap(map[string]interface{}, interface{}) error
}

type DynamoParser struct{}
(dynamo DynamoParser) func UnmarshalMap(attrs map[string]interface{},obj interface{}) error {
   return dynamodbattribute.UnMarshalMap(attr,obj)
}

type ErrorParser struct{
  Err error
}

(errParser ErrorParser ) func UnmarshalMap(map[string]interface{}, interface{}) error {
   return errParser.Err
}

type MyDatabase struct {
  itemParser ItemParser
}

(db MyDatabase) func update(ddbClient) {
    updatedItem, err := ddbClient.updateItem(...)
    obj := new(MyCustomObj)
    err := db.itemParser.UnMarshalMap(updatedItem.Attributes, &obj)
    if err != nil {
     fmt.println("Error while unmarshalling")
   }

}

尽管您似乎正在尝试运用所有逻辑路径。不太确定为什么需要这样做,但如果您遵循代码覆盖率,我不建议达到 100%

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何为 dynamodbattribute.unmarshal 函数编写模拟》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>