第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

golang 測試臨時(shí)目錄

golang 測試臨時(shí)目錄

Go
qq_笑_17 2021-06-14 10:43:09
我有一個(gè)簡單的函數(shù),可以將配置文件解析為 JSON。我想編寫一個(gè)測試,它要么使用一些示例靜態(tài)配置文件并解析它們,要么在測試期間創(chuàng)建示例并嘗試解析它們。這個(gè)問題并非完全必要,但這里是基本代碼:// config.go// ...(package,imports)...// Overall settings - corresponds to main.conftype MainSettings struct {    // stuff}// Load main.conf from the specified file pathfunc LoadMainSettings(path string) (*MainSettings, error) {    b, err := ioutil.ReadFile(path)    if err != nil { return nil, err }    r := &MainSettings{}    err = json.Unmarshal(b, r)    if err != nil { return nil, err }    return r, nil}和測試:// config_test.gofunc TestLoadMainSettings(t *testing.T) {    // possibly generate some example config files,    // or use static samples packaged with the source    s, err := LoadMainSettings("conf/main.conf") // <-- what should this path be??    if err != nil { panic(err) }    // more sanity checking...}也就是說,我的具體問題是:僅適用于測試的靜態(tài)資產(chǎn)(如示例配置文件)是否有合適的位置?在測試執(zhí)行期間,是否有適當(dāng)?shù)模缙脚_(tái),使用“go clean”清理)位置來寫出臨時(shí)文件?(注意:我在 Linux 上運(yùn)行我的大部分內(nèi)容用于登臺(tái)和生產(chǎn),在 Mac 上運(yùn)行本地開發(fā) - 所以使用 /tmp/ 作為測試的臨時(shí)目錄在實(shí)踐中對我有用。但想知道是否有更好的方法......)編輯:最終使用這種方法進(jìn)行測試:f, err := ioutil.TempFile("", "testmainconf")if err != nil { panic(err) }defer syscall.Unlink(f.Name())ioutil.WriteFile(f.Name(), []byte("{...sample config data...}"), 0644)s, err := LoadMainSettings(f.Name())但是另一個(gè)讓 LoadMainSettings 接受 anio.Reader而不是 astring的建議也是一個(gè)好主意。
查看完整描述

3 回答

?
慕神8447489

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊

只是為了與你所擁有的進(jìn)行比較ioutil.TempDir,以下是與 的情況io.Reader:


// Load main.conf from the specified file path

func LoadMainSettings(src io.Reader) (*MainSettings, error) {

    b, err := ioutil.ReadAll(src)

    if err != nil { return nil, err }


    r := &MainSettings{}

    err = json.Unmarshal(b, r)

    if err != nil { return nil, err }


    return r, nil

}

具體來說,我們改變從參數(shù)path字符串的src io.Reader實(shí)例,我們在更換ioutil.ReadFile用ioutil.ReadAll。


您編寫的測試用例最終會(huì)縮短一點(diǎn),因?yàn)槲覀兛梢允∪ノ募僮鳎?/p>


s, err := LoadMainSettings(strings.NewReader("{...sample config data...}"))


查看完整回答
反對 回復(fù) 2021-06-28
?
慕婉清6462132

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊

您可以使用同一個(gè)包中的ioutil.TempDir或 TempFile 。


查看完整回答
反對 回復(fù) 2021-06-28
?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

從 Go 1.15 版開始,現(xiàn)在T.TempDir()在標(biāo)準(zhǔn)testing包中。該文檔解釋如下:

TempDir 返回一個(gè)臨時(shí)目錄供測試使用。當(dāng)測試及其所有子測試完成時(shí),Cleanup 會(huì)自動(dòng)刪除該目錄。每次對 t.TempDir 的后續(xù)調(diào)用都會(huì)返回一個(gè)唯一的目錄;如果目錄創(chuàng)建失敗,TempDir 通過調(diào)用 Fatal 終止測試。


查看完整回答
反對 回復(fù) 2021-06-28
  • 3 回答
  • 0 關(guān)注
  • 323 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號