当前位置: 首页 > 知识库问答 >
问题:

使用订阅成功条件的单元测试 Angular 显示错误

范金鑫
2023-03-14

嗨,我需要为这个函数编写单元测试角,如下所示:

  resendOTP() {
      this.authProvider.resendOTP(this.tempId, this.tempToken).subscribe((result) => {
      this.tempId = result.data.resendOtp.id;
      this.tempToken = result.data.resendOtp.access_token;
      this.showResendInfo = true;
      this.showResend = false;
      this.messageBoxService.showSuccess('SMS has been sent', 2000);
      this.startTimer();
    }, (error) => {
      if (error.graphQLErrors[0].message.includes('Maximum limit exceeded')) {
        this.validError = true;
        this.loginState = 'login';
        this.propertyAlert.message = `You\'ve requested OTP Code after the 5th attempt and your account has been
        suspended. Please contact the administrator to recover it.`;
        // setTimeout(() => {
        //   this.reloadCaptcha();
        // }, 100);
      }
    });
  }

我成功地为错误条件创建

它('显示帐户暂停后,使5 otp atemps', () =

但是当我为成功条件而创造时

it('show account success after make 5 otp attemps', () => {
  let response = [];
  spyOn(providerService, 'resendOTP').and.returnValue(of(response));
  component.resendOTP();
  expect(component.showResend).toBeFalsy()
  expect(component.showResendInfo).toBeTruthy()    
});

它显示了“可观察”类型的参数

共有1个答案

万嘉石
2023-03-14

它说响应对象的类型错误。将响应的值更改为FetchResault

考虑在resendOTP()方法中处理订阅,因为现在您可能会引入内存泄漏。例如。

ngOnInit() {
  this.subscription = this.yourObservable.subscribe(() => {
   //some code
   });
}

ngOnDestroy() {
  this.subscription.unsubscribe();
}   

显式声明返回类型也是一种很好的做法,例如

 resendOTP(): void {
    //your code
  }
 类似资料:
  • 首先:这与SonarQube不显示单元测试成功无关。关于这个话题有很多问题和答案,但它们都没有帮助。 我的设置:在上使用由触发的和默认的surefire测试。这就是Sonarqube的结果: 如您所见,它正确地显示所有项目的单元测试成功。选择一个项目使我们获得了包测试的成功。在这一点上变得奇怪了。例如GUI包:它说8,3%的项目测试成功,但0,0%的包测试成功。这怎么可能? 问题是:为什么xxx.

  • 我正在用作曲家实例化条纹,并试图在测试模式下使用卡号4000 0000 0000 0341订阅客户订阅计划。留档表示这将被接受,但在用于创建订阅时抛出一个错误。我的问题是,为什么创建订阅步骤总是以这个卡号返回成功? 我的收费代码是 还有我的订阅。php是

  • 正如我在开始时所说的,单元测试成功率确实成功地显示出来,所以我相信只需要一个小的改变就可以使单元测试复盖范围发挥作用。 任何帮助都将不胜感激!

  • 我正在设置我的第一个Jenkins服务器来构建和测试现有的maven项目,而jenkins无法完成单元测试。 当我从命令行运行“mvn清洁安装”时,所有模块都会构建并通过它们的单元测试。然而,Jenkins只能运行第一组单元测试(通过),然后以某种方式出错。 我用的是詹金斯1.499。 以下是来自顶级pom报告插件的一些相关信息:

  • 问题内容: 我在尝试为Angular-Bootstrap编写茉莉花单元测试时遇到问题 。确切的错误是 `Expected spy open to have been called with [ { templateUrl : ‘/n/views/consent.html’, controller : ‘W2ConsentModal as w2modal’, resolve : { employee

  • 我需要对Symfony 4中的a用户进行功能测试,但我很难找到方法。订阅服务器具有以下结构 订阅者的流正在接收内部事件,并通过命令总线通过 rabbit 将消息发送到另一个项目。 如何测试调度事件是否执行了进程中的行? 有人有关于在Symfony 4中测试事件和订阅者的最佳实践的文档吗?