expect().to.be.a(Error) 无法处理抛出错误 _ chai
expect().to.be.a(Error) not working on throw error _ chai
这是我的函数,我正在尝试为其创建测试:
function foo(obj) {
if(typeof obj === 'object' && obj !== null &&Object.prototype.toString.call(obj) == '[object Object]'){
// do something
}else{
throw new Error(`function test() only accepts [object Object], you passed: ${Object.prototype.toString.call(obj)}`, )
}
};
这是我的测试用例:
it("it should complain with typeof", ()=>{
try{
foo(["aaaa"])
}
catch (error){
chai.expect(error).to.be.a(Error)
}
})
但是我没能通过考试
要检查异常,最好使用:
expect(function () {}).to.throw();
所以在你的代码中:
it("it should complain with typeof", ()=>{
expect(()=> foo(["aaaa"]) ).to.throw();
})
顺便说一句,明确检查错误:
it("it should complain with typeof", ()=>{
expect(foo(["aaaa"]).to.be.an('error')
})
正确的语法是:
expect(error).to.be.an('error')
另外'Error'
或.a('error')
也会通过测试。
使用此代码测试(在 docs 中定义):
expect(new Error).to.be.an('error');
您也可以使用 to.throw()
来预期抛出错误。
这是我的函数,我正在尝试为其创建测试:
function foo(obj) {
if(typeof obj === 'object' && obj !== null &&Object.prototype.toString.call(obj) == '[object Object]'){
// do something
}else{
throw new Error(`function test() only accepts [object Object], you passed: ${Object.prototype.toString.call(obj)}`, )
}
};
这是我的测试用例:
it("it should complain with typeof", ()=>{
try{
foo(["aaaa"])
}
catch (error){
chai.expect(error).to.be.a(Error)
}
})
但是我没能通过考试
要检查异常,最好使用:
expect(function () {}).to.throw();
所以在你的代码中:
it("it should complain with typeof", ()=>{
expect(()=> foo(["aaaa"]) ).to.throw();
})
顺便说一句,明确检查错误:
it("it should complain with typeof", ()=>{
expect(foo(["aaaa"]).to.be.an('error')
})
正确的语法是:
expect(error).to.be.an('error')
另外'Error'
或.a('error')
也会通过测试。
使用此代码测试(在 docs 中定义):
expect(new Error).to.be.an('error');
您也可以使用 to.throw()
来预期抛出错误。