我在使用 VsCode 測(cè)試 Go 應(yīng)用程序時(shí)遇到一些問題。這是我的 launch.json{ "name": "Test", "type": "go", "request": "launch", "mode": "test", "program": "${workspaceFolder}/test", "env": {}, "args": []}現(xiàn)在我遇到的問題是我的應(yīng)用程序應(yīng)該在子文件夾中寫入文件(atm 是 ./temp)。為此,我有兩個(gè)函數(shù),第一個(gè)是確定文件路徑func getFilePath() string { dir, err := filepath.Abs(filepath.Dir(os.Args[0])) if err != nil { panic(err) } return dir + "/temp/ocicd-config.yaml"}另一個(gè)用于保存文件func SaveToYaml(Config Structs.Project) { fmt.Println("Saving Config") yaml, err := yaml.Marshal(Config) if err != nil { panic(err) } fmt.Println(string(yaml)) ioutil.WriteFile(getFilePath(), yaml, 0644)}以及加載文件func Load() Structs.Project { fmt.Println("Loading Config") file, err := ioutil.ReadFile(getFilePath()) if err != nil { panic(err) } project := Structs.Project{} err = yaml.Unmarshal(file, &project) if err != nil { panic(err) } return project}現(xiàn)在的問題是,VsCode 使應(yīng)用程序在 ./test 子文件夾中運(yùn)行,這使我的應(yīng)用程序嘗試從 ./test/temp 加載并保存到 ./test/temp,這不是我想要的。我嘗試更改我的 launch.json 以實(shí)際使用 ${workspace} 作為程序并使用“./test”作為參數(shù),但這會(huì)使測(cè)試完全停止工作?,F(xiàn)在我很迷失。我有什么想法可以解決這個(gè)問題嗎?
1 回答

慕姐4208626
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
您應(yīng)該在文件系統(tǒng)之上使用一個(gè)抽象層(而不是),而不是讓測(cè)試直接寫入磁盤上的文件(此模型可能會(huì)出現(xiàn)并發(fā)問題)ioutil
。
github.com/spf13/afero
是一個(gè)用于此目的的很棒的庫。對(duì)于您的測(cè)試用例,您可以簡(jiǎn)單地傳遞 MemFs 層而不是 OsF。
- 1 回答
- 0 關(guān)注
- 138 瀏覽
添加回答
舉報(bào)
0/150
提交
取消