茉莉花存根抛出一个对象而不是一个字符串
jasmine stub to throw an object instead of a string
我正在 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('toto@gmail.com', '1234');
submitForm();
// expect stuff here
});
我找到了一个解决方案:使用 returnValue() 而不是存根中的 throwError()
然后在返回值中你可以使用 rxjs throwError()
抛出你想要的任何东西
spyOn(appUserApi, 'loginDoctor')
.and
.returnValue(
throwError({ statusCode: 401, code: 'LOGIN_FAILED' })
);
重要说明:这里,throwError() 来自 rxjs,而不是来自 jasmine spy!
我正在 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('toto@gmail.com', '1234');
submitForm();
// expect stuff here
});
我找到了一个解决方案:使用 returnValue() 而不是存根中的 throwError() 然后在返回值中你可以使用 rxjs throwError()
抛出你想要的任何东西spyOn(appUserApi, 'loginDoctor')
.and
.returnValue(
throwError({ statusCode: 401, code: 'LOGIN_FAILED' })
);
重要说明:这里,throwError() 来自 rxjs,而不是来自 jasmine spy!