我正在使用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()
})
答案 0 :(得分:5)
似乎我无法在t.throws
的参数内调用该函数,因为它会抛出错误,呃。我相信这是正确的用法。
t.throws(function(){
myFunction({})
})
答案 1 :(得分:0)
不是像上面评论中建议的那样绑定,你可以像这样使用箭头函数:
t.throws(() => myFunction({}), 'should throw an exception')