Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jasmine异步测试错误处理_Jasmine_Karma Jasmine - Fatal编程技术网

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

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

在这种情况下,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
。。