Jasmine异步测试错误处理
我在Karma/Jasmine中有一个测试:Jasmine异步测试错误处理,jasmine,karma-jasmine,Jasmine,Karma Jasmine,我在Karma/Jasmine中有一个测试: it('async error test', done => { function foo(){ throw new Error('test error'); } function async(){ setTimeout(() => { try{ let res
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的异步错误吗?在这种情况下,Jasmine和Mocha/Chai API略有不同。在jasmine中,
done
函数不接受任何参数。因此,如果传入错误,它将被忽略
在mocha/chai中,传递到done函数的错误将使测试失败
如果您使用的是jasmine,而不是传入错误,则需要在catch块中执行类似的操作:
} catch(e) {
expect(true).toBe(false);
done();
}
正如你为jasmine写的,测试应该通过。您的
foo()
函数抛出一个错误,它被捕获,测试结束。就这么简单<代码>预期(res).永远无法达到toBe(5)。而且测试正常结束,没有任何错误。谢谢,我认为这是非常糟糕的做法,因为即使这样,在编写测试时也很难看到错误本身。也许这是使用组织更为完善(且有良好文档记录)的跑步者的动机之一,比如mocha
,它也支持async
/wait
。。