Angular 角度测试在隔离运行时工作,但在与其他TET一起运行时失败

Angular 角度测试在隔离运行时工作,但在与其他TET一起运行时失败,angular,karma-jasmine,angular-test,Angular,Karma Jasmine,Angular Test,我遇到了一个问题,即当一个测试与我的应用程序中的所有其他测试一起运行时,它总是失败。返回的错误是 未捕获的TypeError:您在需要流的位置提供了“未定义”。您可以提供一个可观察的、承诺的、数组的或可观察的。扔 以下是问题中的两个类和测试文件 通知类 export class Notification { message: string; category: string; clearAll: boolean = false; constructor(message: str

我遇到了一个问题,即当一个测试与我的应用程序中的所有其他测试一起运行时,它总是失败。返回的错误是

未捕获的TypeError:您在需要流的位置提供了“未定义”。您可以提供一个可观察的、承诺的、数组的或可观察的。扔

以下是问题中的两个类和测试文件

通知类

export class Notification {
  message: string;
  category: string;
  clearAll: boolean = false;

  constructor(message: string, category?: string, clear?: boolean) {
    this.message = message;
    if (category) {
      this.category = category;
    }
    if (clear) {
      this.clearAll = clear;
    }
  }
}
通知服务类

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Notification } from '../shared/notification';;


@Injectable({
  providedIn: 'root'
})
export class NotificationsService {
  notificationSubject: Subject<Notification>;
  notification$: Observable<any>;


  constructor() {
    this.notificationSubject = new Subject<Notification>();
    this.notification$ = this.notificationSubject.asObservable();
  }

  getNotificationObservable(): Observable<Notification> {
    return this.notification$;
  }

  /**
   * Method allowing a notification to be added so that subsribers can deal with is     according.
   * @param {Notification}notification
   */
  addNotifications(notification: Notification): void {
    this.notificationSubject.next(notification);
  }
}
如果我在测试通过时运行此测试。i、 e

fit('to be created', () => {
    expect(1 === 1).toBeTruthy();
  });
根据我所做的搜索,似乎有以下建议:

  • 以前的测试没有正确地重置测试台,这就是为什么测试在隔离状态下成功,但在与tothers一起运行时失败的原因
  • 或者通知类在测试之间共享一个属性,这导致了问题

我怀疑第二颗子弹可能是这样,但我似乎无法确定问题所在。

我也有同样的问题。问题不在于失败的测试,而在于之前的测试。我最终删除了上一个测试,并解决了此问题。

这并不能回答问题。这句话实际上是问题的一部分。我想发表评论,但没有足够的声誉谢谢你@ChunshengHu,这为我指明了正确的方向。我显然在通知测试之前运行了异步测试,这些测试是异步的,但没有正确关闭。一旦我添加了适当的“verify()和“done()”方法,事情就开始了。为什么您希望这个问题出现在通知类中?您的错误是关于丢失的流,通知不包含任何流。
fit('to be created', () => {
    expect(1 === 1).toBeTruthy();
  });