Javascript 为什么错误不会在Jasmine测试中抛出?
我试图让一个模拟调用抛出一个错误,但是我得到了错误“Expected function to throw error” 下面是我尝试过的代码。我在这里关注了其他一些事情,但运气不好Javascript 为什么错误不会在Jasmine测试中抛出?,javascript,angular,typescript,jasmine,Javascript,Angular,Typescript,Jasmine,我试图让一个模拟调用抛出一个错误,但是我得到了错误“Expected function to throw error” 下面是我尝试过的代码。我在这里关注了其他一些事情,但运气不好 it ('should throw err', () => { const mockCall = spyOn(service, 'update$').and.returnValue(throwError(new Error(error'))); expect(mockCall).toThrowE
it ('should throw err', () => {
const mockCall = spyOn(service, 'update$').and.returnValue(throwError(new Error(error')));
expect(mockCall).toThrowError();
});
首先,缺少一个引号
”
。接下来,我认为您应该以这种方式实施它:
const mockCall = spyOn(service, 'update$').and.throwError('error');
您不想模拟函数的返回,而是想抛出一个异常。您可以使用
callFake
模拟并抛出服务方法中的错误。通过将spy
链接到和.callFake
,所有对spy的调用都将委托给提供的函数:
spyOn(service, 'update$').and.callFake(() => throwError(new Error('Fake error')));
expect(service.update$()).toThrow();
尝试将其更改为
expect(()=>mockCall()).tothrower()
。测试框架API的原因是什么?