我有以下代码:
func policyDocumentToStr(doc map[string]interface{}) (*string, error) {
policy, err := json.Marshal(doc)
if err != nil {
log.Debugf("Error converting policy document to string. Error %s", err)
return nil, err
}
policyAsString := string(policy)
return &policyAsString, nil
}
Run Code Online (Sandbox Code Playgroud)
我想编写一个单元测试来涵盖json.Marshal(doc)
返回错误的情况。有人可以建议我如何生成错误吗?什么样的函数输入会导致行出错policy, err := json.Marshal(doc)
?
我想不出更好的标题。
在下面的代码中,如果rollBackLogger
是nil
,第一个测试用例将失败,但所有其他测试用例将引发异常。
有没有办法避免这种情况,除了使用 if
语句?
我相信这是单元测试非常常见的情况,应该有一些功能assert
或其他方式来避免这种情况。
assert.NotNil(rollbackLogger)
assert.Equal("Action", rollBackLogger[0].Action)
assert.Equal("random path", rollBackLogger[0].FilePath)
Run Code Online (Sandbox Code Playgroud) 与其他AWS服务(s3资源)不同,ARN不包含AWS帐号。
很少有示例ARN:
-Elastic Beanstalk应用程序版本-arn:aws:elasticbeanstalk:us-east-1:123456789012:environment / My App / MyEnvironment
-IAM用户名
-arn:aws:iam :: 123456789012:user / David
-用于标记的Amazon RDS实例
-arn:aws:rds:eu-west-1:123456789012:db:mysql-db
另一方面,s3存储桶ARN看起来像:
我有以下功能,它在当前时间添加给定的小时数并返回a中的新时间
func getExpiryTime(hour int) *string {
const layout = "2006-01-02T15:04:05Z"
expiryTime := time.Now().Local().Add(time.Hour *time.Duration(hour))
return aws.String(expiryTime.Format(layout))
}
Run Code Online (Sandbox Code Playgroud)
为这个函数编写单元测试的最佳方法是什么?