我正在嘗試為這樣的文件編寫單元測試//file1.govar ( fileName = "/path/to/original/file.json")func DoSomething(){ // Read <fileName> and do some stuff}但是對于單元測試,我想使用 /path/to/dummy/file.json 供 DoSomething() 使用 file1_test.go 將與 file.go 在同一個包下編寫測試用例的正確方法是什么這個功能?將 fileName 變量修改為 /path/to/dummy/file.json 是個好主意嗎?還是我們應該修改 file1.go 以使其適合測試?這是使這些值可配置的標準嗎,以便它們可以在單元測試期間修改,例如在這種情況下的文件名,或者我們應該修改我們的函數,以便它可以直接處理字節流數據,以便在測試測試期間我們可以提供虛擬數據直接地?
1 回答

慕勒3428872
TA貢獻1848條經驗 獲得超6個贊
使用配置/設置結構。在生產中,最好使用 YAML 來保存配置值
type Config struct{FileName string}
在 main.go
var conf Config
func main(){
conf = LoadConfigFromYaml()
DoSomething()
}
func DoSomething(){
// Read <fileName> from conf.FileName
}
在 main_test.go
func TestSomething(t *testing.T){
conf = Config{FileName: "/path/to/dummy/file.json"}
DoSomething()
}
它還允許您為每個測試設置不同的配置。
更好的方法是創建一個在初始化時接受 Config 并從 main 和 test 注入配置并避免使用main package變量的庫。
- 1 回答
- 0 關注
- 97 瀏覽
添加回答
舉報
0/150
提交
取消