引发异常的测试函数
问题描述:
我正在使用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
的自变量中的功能,因为它引发的错误,真不错。我相信这是正确的用法。
t.throws(function(){
myFunction({})
})
答
而是结合的如上面的评论所说,ü可以用箭头功能是这样的:
t.throws(() => myFunction({}), 'should throw an exception')
或't.throws(myFunction.bind(空,{}), '应该抛出异常')' – mynameistechno 2015-10-17 06:06:40