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

问题描述 投票:0回答:1

我正在 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
  });
angular jasmine karma-jasmine
1个回答
1
投票

我找到了一个解决方案:在存根中使用 returnValue() 而不是 throwError() 然后在返回值中你可以使用 rxjs throwError() 抛出任何你想要的东西

spyOn(appUserApi, 'loginDoctor')
      .and
      .returnValue(
        throwError({ statusCode: 401, code: 'LOGIN_FAILED' })
      );

重要提示:这里的 throwError() 来自 rxjs,而不是来自 jasmine间谍!

© www.soinside.com 2019 - 2024. All rights reserved.