Jasmine异步测试错误处理

时间:2017-03-26 13:21:17

标签: jasmine karma-jasmine

我在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的异步错误?

1 个答案:

答案 0 :(得分:1)

在这种情况下,茉莉和摩卡/柴API略有不同。在jasmine中,done函数不带任何参数。因此,如果传入错误,则会被忽略。

在mocha / chai中,传入done函数的错误将无法通过测试。

如果您使用的是jasmine,而不是传递错误,则需要在catch块中执行以下操作:

} catch(e) {
  expect(true).toBe(false);
  done();
}

正如你为茉莉花写的那样,测试正在按原样传递。您的foo()函数会抛出错误,它会被捕获,测试结束。就那么简单。永远不会达到expect(res).toBe(5)。测试通常没有任何错误。

相关问题