3 回答
TA貢獻1829條經(jīng)驗 獲得超13個贊
這是使用可變全局狀態(tài)的問題。
我的建議是添加一個標志以在某些條件下不運行它,或者公開一個可以在內部測試中恢復/更新這個全局變量的私有函數(shù)。
這反映了您的設計:如果測試起來很復雜,也許您應該重構。
創(chuàng)建一個帶有字段服務的對象應用程序,在構造函數(shù)/構建器/工廠上創(chuàng)建將更容易測試。
init的用法很講究。除了將驅動程序注冊到 sql 包中,我從不使用它(可能是為了處理標志)。
也許你可以在你的設計中添加更多的 OO
TA貢獻1856條經(jīng)驗 獲得超5個贊
我找到了一個解決方法,您可以阻止初始化代碼在您的測試中執(zhí)行,并像這樣隔離地測試該方法:
func init(){
if len(os.Args) > 0 && strings.HasSuffix(os.Args[0], ".test") {
log.Printf("skipping jwt.init() for testing")
} else if len(os.Args) > 1 && strings.HasSuffix(os.Args[1], "-test.run") {
log.Printf("skipping jwt.init() for testing")
} else {
response := myService.get()
}
}
這將阻止調用 init 服務調用。
- 3 回答
- 0 關注
- 196 瀏覽
添加回答
舉報
