我想知道在使用外部系統(例如數據庫)時是否有一種公認的/慣用的方法來測試意外行為。這些主要是“if err != nil {...}”中的情況,通常錯誤不會發生并且您不通過輸入控制它。一種“正確”的方法可能是定義一個接口和一個模擬結構,當您需要它時會返回錯誤。但是,如果我已經有大量不適用于接口的代碼,那么僅僅為了測試幾個場景而引入它們似乎很煩人。那么有人知道并使用不同的方法嗎?例如,在 php 和 js 等動態語言中,可以使用模擬庫甚至手動覆蓋函數/方法行為,這在編寫測試時非常有用。
1 回答

守著星空守著你
TA貢獻1799條經驗 獲得超8個贊
使用接口和自定義/模擬實現進行測試是做到這一點的方法。如果您想測試大部分代碼,現在就值得進行切換。如果您不想只測試大部分代碼的一小部分,那么為測試煩惱又有什么意義呢?他們不會向您保證任何事情,相反,他們會給您一種“一切”都很好的錯覺。
如果您不想使用和模擬接口,另一種方法是模擬數據庫服務器本身,但讓我們面對現實吧,這會更麻煩。
只需使用接口。重構永遠不會太晚。從長遠來看,這總是值得做的事情。
另請注意,您可以逐漸進行此“切換”。只需創建一個接口,其中包含您要測試的代碼所使用的功能。您無需“觸摸”其余代碼。更改可測試代碼以使用該接口,然后您可以在測試中模擬該接口。這在 Go 中很容易。
- 1 回答
- 0 關注
- 111 瀏覽
添加回答
舉報
0/150
提交
取消