小编Abh*_*oni的帖子

如何为 json.Marshall 的失败案例编写单元测试?

我有以下代码:

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)

json unit-testing go

3
推荐指数
3
解决办法
7863
查看次数

由于先前的测试用例失败而引发的断言异常

我想不出更好的标题。

在下面的代码中,如果rollBackLoggernil,第一个测试用例将失败,但所有其他测试用例将引发异常。

有没有办法避免这种情况,除了使用 if语句?

我相信这是单元测试非常常见的情况,应该有一些功能assert或其他方式来避免这种情况。

assert.NotNil(rollbackLogger)
assert.Equal("Action", rollBackLogger[0].Action)
assert.Equal("random path", rollBackLogger[0].FilePath)
Run Code Online (Sandbox Code Playgroud)

testing junit unit-testing assert go

3
推荐指数
1
解决办法
507
查看次数

为什么S3存储桶ARN不包含AWS帐号?

与其他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看起来像:

  • arn:aws:s3 ::: my_corporate_bucket / exampleobject.png

amazon-s3 amazon-web-services

2
推荐指数
1
解决办法
1302
查看次数

一小时后如何编写功能返回时间的单元测试

我有以下功能,它在当前时间添加给定的小时数并返回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)

为这个函数编写单元测试的最佳方法是什么?

unit-testing go

-4
推荐指数
1
解决办法
73
查看次数