我一直在想这整个晚上,但仍然找不到一个优雅的方式来做这件事。假设我有一个结构体Golang单元测试中的存根方法
type fileStruct {
x int
}
func (f *fileStruct) filename() string {
return fmt.Sprintf("%s/%d.log", exportPath, f.x)
}
func (f *fileStruct) write(data []byte) {
...
file = os.File.Open(f.filename())
...
}
现在我想测试写入方法和存根文件名方法以返回临时文件名。我怎样才能做到这一点?到了此刻我发现了两个选项:
- 申报文件名= FUNC(F * fileStruct)和测试覆盖它
- 使文件名结构的场
但他们似乎都错这个案例。所以问题是 - 我可以以任何方式存根这种方法吗?一般来说 - 如何测试内部方法(对于外部明显的依赖注入可以起作用)