2 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
出于這個(gè)原因,我發(fā)現(xiàn)除了 main 之外的所有函數(shù)和包返回錯(cuò)誤而不是直接調(diào)用 log.Fatal 都很有用。然后它可以是主要的決定是否退出錯(cuò)誤。盡管在很多情況下嘗試獲得 100% 的測(cè)試覆蓋率可能會(huì)導(dǎo)致收益遞減,因此稱其為足夠好也可以。

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊
我可以建議的一個(gè)技巧是,不要調(diào)用log.Fatal,而是使用相同的簽名制作自己的致命函數(shù):
var fatal func(...interface{}) = log.Fatal
在您的包裹中的任何地方。它可以是未導(dǎo)出的,因此其他包無(wú)法設(shè)置或使用它。然后在您的測(cè)試中,您可以將其替換為:
fatal = func(v ...interface){
panic(fmt.Sprint(v...))
}
或者你想做的任何事情。
當(dāng)我需要測(cè)試 time.Now 或類似的東西時(shí),我會(huì)使用這種技巧。
- 2 回答
- 0 關(guān)注
- 203 瀏覽
添加回答
舉報(bào)