【发布时间】:2016-04-25 20:25:28
【问题描述】:
我整晚都在想这件事,但仍然找不到优雅的方式来做这件事。假设我有一个结构
type file struct {
x int
}
func (f *file) filename() string {
return fmt.Sprintf("%s/%d.log", exportPath, f.x)
}
func (f *file) write(data []byte) {
...
aFile = os.File.Open(f.filename())
...
}
现在我想测试 write 方法和 stub filename 方法来返回临时文件名。我怎样才能做到这一点?到目前为止,我找到了两个选择:
- 声明 filename = func(f* file) 并在测试中覆盖它
- 使文件名成为结构的字段
但在这种情况下,他们似乎都错了。所以问题是 - 我可以以任何方式存根这种方法吗?总的来说 - 如何存根用于测试的内部方法(对于外部显然依赖注入可以工作)
【问题讨论】:
标签: unit-testing go