我正在 Angular 上对一个组件进行单元测试。在这里,我从外部服务调用函数并人为地抛出错误,以测试组件如何处理错误。
为此,我需要我的错误是这样的
{ statusCode: 401, code: 'LOGIN_FAILED' }
但是,Jasmine throwError 方法仅抛出作为参数传递的单个字符串。是否有解决方法或我不知道的方法,以便我可以抛出对象?
这是迄今为止我的代码:
fit('should display error message if login failure', () => {
// should throw ({ statusCode: 401, code: 'LOGIN_FAILED' });
const spyLogin = spyOn(appUserApi, 'loginUser').and.throwError('test');
fillForm('[email protected]', '1234');
submitForm();
// expect stuff here
});
我找到了一个解决方案:在存根中使用 returnValue() 而不是 throwError() 然后在返回值中你可以使用 rxjs throwError() 抛出任何你想要的东西
spyOn(appUserApi, 'loginDoctor')
.and
.returnValue(
throwError({ statusCode: 401, code: 'LOGIN_FAILED' })
);
重要提示:这里的 throwError() 来自 rxjs,而不是来自 jasmine间谍!