如何在Angular 7中的管道(takeWhile(...))之后测试订阅代码

时间:2019-01-28 20:30:35

标签: angular rxjs karma-jasmine

我很惊讶,尽管进行了大量搜索,但我仍然找不到答案。

我正在尝试测试我的订阅代码是否做对了。在Angular 2中,我已经做过无数次了,但是我们刚刚启动了一个新项目,所以我们使用的是最新的Angular,它重新编写了rxjs,将链接更改为管道,现在我不知道该怎么做。模拟或如何做。

给出:

  constructor(private media: MediaObserver) { }

  ngOnInit() {
    this.active = true;

    this.media.media$.pipe(takeWhile((ev) => this.active)).subscribe((change: MediaChange) => {
      if (change.mqAlias === "xs" || change.mqAlias === "sm") {
        this.stackFooter = true;
      } else {
        this.stackFooter = false;
      }
    });
  }

当媒体服务触发事件时,如何编写业力/茉莉花测试以确保this.stackFooter设置正确? 例如,我尝试监视各种事物(media $,“ pipe”),但是takeWhile()似乎返回了一个新的Observable,但我似乎无权访问它?我该如何测试?或者,这不再是推荐的模式,我应该完全做其他事情吗?

1 个答案:

答案 0 :(得分:0)

实际上它正在返回一个新的Observable,但您并不关心Observable本身,而是关心它包含的流,请尝试执行以下操作:

在测试中

measuring_point: '-'

哇,很难在编辑器中输入它。如果我错过了一些东西,将无法正常工作,请添加带有我的名字的评论,以便我看到它。希望有帮助。