[英]Unit testing - when/how to stub?
我試圖在單元測試我的代碼方面變得更好-包括嘗試一些tdd。 我有一個問題是我應該如何測試解析csv文件的對象。 讓我舉一個小例子...
class EventLog {
parse() {
// load csv file, create array of Events
}
getEvents(options) {
// depending on options, return correct set of events
}
}
class Event {}
因此,首先,我想為我的getEvents
方法編寫測試,以確保不同的選項產生正確的結果。 在這種情況下,我是否想創建一個存根以進行分析以使我可以通過一組Events
,然后對該數據集運行測試?
其次,我將需要測試解析方法。 計划測試一些簡單的事情,例如文件不存在,格式不符合預期,創建正確的Events
等。為此,我應該只存儲一些示例.csv
文件來滿足我的需要嗎? 還是將loadCsv()
方法拔出並存根會更有效?
該班使用有多難?
如果很容易,例如解析器需要一些字符串,那么您可以考慮直接使用它。 使用ES6類,您甚至可以聲明一個新class TestEventLog extends EventLog
並將繼承用作最小的存根。 這開銷最少,是我最喜歡的策略。
如果該類特別復雜,請記住,對於小型(單元)測試,您希望專注於一小部分代碼。 如果看到正在測試的類中有大量方法正在調用,則說明測試存根很差。
在這種情況下,我可能首先繼承並替換:
class TestEventLog extends EventLog {
parse() {
// ignore arguments, return known test data
return [['foo', 1], ['bar', 2]];
}
}
指導原則應該是引入盡可能少的代碼。 為支持測試而編寫的代碼越多,需要測試的代碼就越多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.