【发布时间】:2017-02-10 08:45:59
【问题描述】:
我正在用 Go 编写一个使用 Google cloud storage 的 appengine 应用程序。
例如,我的“阅读”代码如下所示:
client, err := storage.NewClient(ctx)
if err != nil {
return nil, err
}
defer func() {
if err := client.Close(); err != nil {
panic(err)
}
}()
r, err := client.Bucket(BucketName).Object(id).NewReader(ctx)
if err != nil {
return nil, err
}
defer r.Close()
return ioutil.ReadAll(r)
...其中ctx 是来自appengine 的上下文。
当我在单元测试中运行这段代码时(使用aetest),它实际上向我的云存储发送请求;我想改为密封运行,类似于 aetest 允许虚假数据存储调用。
(可能与question 相关,但它处理python,并且链接的github issue 表明它以特定于python 的方式解决)。
我该怎么做?
【问题讨论】:
-
@SachinNambiarNalavatttanon 我正在寻找一个假存储;你是在建议我模拟它并自己实现一个假的吗?
-
如果你最终调用了一个外部资源,你就没有在做单元测试。您有一个功能可以获取文本并查找最常用的单词。此函数获取字节缓冲区并返回结果片段。在测试中,您获取一个字符串并将其转换为字节缓冲区并将其发送到函数,在生产中您从 GCS 读取将文件转换为字节缓冲区并将其发送到函数。
标签: unit-testing google-app-engine go google-cloud-storage