相关疑难解决方法(0)

我如何模拟RxJs 6计时器?

我们最近从Angular 5更新到Angular 6,并使用它更新了RxJs 6.作为迁移的一部分,计时器使用率已从以下变化:

Observable.timer()
Run Code Online (Sandbox Code Playgroud)

timer()
Run Code Online (Sandbox Code Playgroud)

在我们的测试中有很多地方我们使用以下模式模拟计时器可观察量.

let timerObserver: Observer<any>;

 beforeEach(() => {
 spyOn(Observable, 'timer').and.returnValue(Observable.create(
    ((observer: Observer<any>) => {
      timerObserver  = observer;
    })
  ));
});

it(`should not have any notifications by default`, () => {
   timerObserver.next('');
   ...
});
Run Code Online (Sandbox Code Playgroud)

有人知道如何迁移这种模式吗?


编辑:我在这里创建了一个简化的问题说明:

https://stackblitz.com/edit/angular-v6-testing-template-nm7add

// Hello.Component
      ngOnInit() {
        const timer$ = timer(30);
        timer$.subscribe(() => {
          this.testMe = 'this has been changed';
        });
      }

// Hello.component.spec
  it('should set testMe after a given timer', fakeAsync(() => {
    tick(50);
    expect(fixture.componentInstance.testMe).toBe('this has been changed');
  })); …
Run Code Online (Sandbox Code Playgroud)

jasmine angular rxjs6

9
推荐指数
1
解决办法
3084
查看次数

用Jest模拟delay()RxJS

有没有简单的方法来模拟delay()RxJS的方法,例如在虚假的时间观察?

我有这种方法:

register(user) {
  return this._checkLog(user).delay(500).flatMap( ... )
}
Run Code Online (Sandbox Code Playgroud)

当我删除delay()方法时,我从_register()进行的测试全部成功。

javascript unit-testing rxjs jestjs

6
推荐指数
1
解决办法
822
查看次数

如何在零时间内获取 RxJS Observable 事件?

我正在将 Observable 的所有事件收集到一个data数组中:

const obs$ = Rx.Observable
  .interval(500)
  .take(4);

let data = [];
const start = performance.now();

obs$.subscribe(
  value => {
    data.push({
      time: performance.now() - start,
      data: value
    });
  },
  () => {},
  () => {
    console.log(JSON.stringify(data, null, 2));
  }
);
Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/rxjs@5.2.0/bundles/Rx.js"></script>
Run Code Online (Sandbox Code Playgroud)

是否有可能“预见未来”并在不等待 2 秒的情况下获得相同的data数组?

澄清一下,我试图找到一种方法,以某种方式obs$用自定义计时器/调度程序以某种方式包装给定的 Observable(在上面的示例中),以便我可以立即获取事件。

javascript rxjs rxjs5

4
推荐指数
1
解决办法
1251
查看次数

标签 统计

javascript ×2

rxjs ×2

angular ×1

jasmine ×1

jestjs ×1

rxjs5 ×1

rxjs6 ×1

unit-testing ×1