茉莉花存根抛出一个对象而不是一个字符串

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!