node.js - expect().to.be.a(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')
})
推荐阅读
- java - java长期线程
- python - 使用python-docx生成MS-word时如何控制表格和图片位置
- list - LINQ提取超过3个重复数据
- html - 标题下拉菜单在移动分辨率中重叠
- php - 如何在php文本区域中允许html链接标签
- android - 如何检测 Pixelbook Pen 按钮?
- android - 在后台和前台使用 Expo 更改推送通知中的徽章计数
- java - 如何将jdom文档放入Inputstream
- c# - 在 OnMouseUp() 方法上使用 unity3d 中的输入字段时,有没有办法只打开移动键盘?
- python - “TypeError:‘str’对象不可调用”