我正在使用tape,我試圖測試幾個函數。我的函數拋出錯誤並驗證對象。我喜歡拋出錯誤,因爲後來我的承諾可以抓住他們。我試圖運行簡單的測試,並在所有場景中建立參數data
,以打擊堆棧中的每個錯誤。我怎樣才能測試這個功能,而不用每次都把它放在try/catch
?我看到有兩個函數的API t.throws()
和t.doesNotThrow()
中,我已經試過兩個,甚至添加了額外參數一樣t.throws(myFunc({}), Error, "no data")
,但似乎沒有按預期運行。引發異常的測試函數
var test = require('tape')
var _ = require('underscore')
function myFunction(data){
if(!data) throw new Error("no data")
if(_.size(data) == 0) throw new Error("data is empty")
if(!data.date) throw new Error("no data date")
if(!data.messages.length == 0) throw new Error("no messages")
data.cake = "is a lie"
return data
}
test("my function", function(t){
t.throws(myFunction({}))
t.end()
}
我對磁帶沒有忠誠度,我也不知道自己在做什麼。我只想簡單地測試引發異常的同步函數,而沒有大量的開銷。所以如果這個用例有更好的單元測試框架,我很樂意使用它。如果磁帶有這種能力,我很樂意使用它。
這是它應該怎麼做?
test("my function", function(t){
try{
myFunction({})
t.fail()
}catch(e){
t.pass(e.message)
}
t.end()
})
或't.throws(myFunction.bind(空,{}), '應該拋出異常')' – mynameistechno 2015-10-17 06:06:40