我一直在想這整個晚上,但仍然找不到一個優雅的方式來做這件事。假設我有一個結構體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)和測試覆蓋它
- 使文件名結構的場
但他們似乎都錯這個案例。所以問題是 - 我可以以任何方式存根這種方法嗎?一般來說 - 如何測試內部方法(對於外部明顯的依賴注入可以起作用)