我在Karma / Jasmine进行了这项测试:
it('async error test', done => {
function foo(){
throw new Error('test error');
}
function async(){
setTimeout(() => {
try{
let res = foo();
expect(res).toBe(5);
} catch(e){
console.log('in error');
done(e);
}
});
}
async();
});
done(e)
应该没有通过测试,但不知怎的,它告诉我测试已经成功。
在Mocha / Chai堆栈中,它按预期工作,测试失败,有谁知道我应该如何处理Karma / Jasmine的异步错误?
答案 0 :(得分:1)
在这种情况下,茉莉和摩卡/柴API略有不同。在jasmine中,done
函数不带任何参数。因此,如果传入错误,则会被忽略。
在mocha / chai中,传入done函数的错误将无法通过测试。
如果您使用的是jasmine,而不是传递错误,则需要在catch块中执行以下操作:
} catch(e) {
expect(true).toBe(false);
done();
}
正如你为茉莉花写的那样,测试正在按原样传递。您的foo()
函数会抛出错误,它会被捕获,测试结束。就那么简单。永远不会达到expect(res).toBe(5)
。测试通常没有任何错误。