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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang 單元測試中的存根方法

Golang 單元測試中的存根方法

Go
富國滬深 2021-12-07 14:44:27
我一直在思考這一整夜,但仍然找不到一種優(yōu)雅的方式來做這件事。假設(shè)我有一個結(jié)構(gòu)type file struct {    x int}func (f *file) filename() string {    return fmt.Sprintf("%s/%d.log", exportPath, f.x)}func (f *file) write(data []byte) {    ...    aFile = os.File.Open(f.filename())    ...}現(xiàn)在我想測試 write 方法和存根文件名方法以返回臨時文件名。我怎樣才能做到這一點?到目前為止,我發(fā)現(xiàn)了兩個選項:聲明文件名 = func(f* file) 并在測試中覆蓋它使文件名成為結(jié)構(gòu)的一個字段但在這種情況下,他們似乎都錯了。所以問題是 - 我可以以任何方式存根這種方法嗎?一般來說 - 如何存根內(nèi)部方法進(jìn)行測試(對于外部顯然依賴注入可以工作)
查看完整描述

2 回答

?
炎炎設(shè)計

TA貢獻(xiàn)1808條經(jīng)驗 獲得超4個贊

使文件名成為結(jié)構(gòu)體的一個字段是一種優(yōu)雅的方式。本filename應(yīng)被定義,當(dāng)新的結(jié)構(gòu)。


type fileStruct {

    filename string

}


func newFileStruct(x int) *fileStruct {

    filename := fmt.Sprintf("%s/%d.log", exportPath, x)

    return &fileStruct{filename: filename}

}


func (f *fileStruct) write (data []byte) {

    ...

    file = os.File.Open(f.filename)

    ...

}


查看完整回答
反對 回復(fù) 2021-12-07
?
瀟湘沐

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

最終使我的結(jié)構(gòu) 100% 可注入,代碼看起來清晰簡潔,測試就像一個魅力!


查看完整回答
反對 回復(fù) 2021-12-07
  • 2 回答
  • 0 關(guān)注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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