【发布时间】:2019-01-18 19:32:30
【问题描述】:
我有一个连接到 AWS S3 并获取文件的程序。 我想为它写一些测试,但我想更一般地知道如何在 Golang 中进行这些模拟。我知道有一些库可以创建模拟,但如果我没记错的话,我读到有人建议只使用标准库进行单元测试是最好的方法。
那么,你将如何测试这样的函数?
func (s S3Input) Sample(key string) ([]byte, error) {
var buf []byte
waBuf := aws.NewWriteAtBuffer(buf)
_, err := s.Downloader.Download(
waBuf,
&s3.GetObjectInput{
Bucket: aws.String(s.Bucket),
Key: aws.String(key),
},
)
if err != nil {
return nil, err
}
return buf, nil
}
谢谢!
【问题讨论】:
-
如果我查看您的代码,我不知道您想在那里测试什么逻辑。 Go 中的一般解决方案是将接口作为输入。然后,您将代码中的依赖项和测试中的模拟传递给该函数。
-
这个函数没有提供任何“测试”,所以为什么要麻烦。
-
你说得对,这段代码不需要太多测试。我的问题可能是一个更通用的问题,例如:“使用 Go 进行单元测试时的最佳实践是什么?”在 ruby 中你可以使用双打,go 需要类似的东西还是有更直接的方法?
标签: unit-testing go