Javascript 为什么错误不会在Jasmine测试中抛出?

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

我试图让一个模拟调用抛出一个错误,但是我得到了错误“Expected function to throw error”

下面是我尝试过的代码。我在这里关注了其他一些事情,但运气不好

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的原因是什么?