首页 > 解决方案 > 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)
    }
})

但我无法通过考试。

标签: node.jsmocha.jschai

解决方案


要检查异常,最好使用:

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')
})

柴文档


推荐阅读