模拟连续发射的两个可观测量

时间:2017-03-17 16:39:17

标签: angular jasmine rxjs reactive-programming

我有一个具有两个可观察属性的组件

@Component({
})
export class MyComponent {
  observable1$;
  observable1$;

  ngOnInit() {
    Observable1$ = this.service.getObservable1();
    Observable2$ = this.service.getObservable2();
  }
}

我练习,observable2$仅在bar发出observable1$后才会发出foo

我如何编写模拟此项的测试?

如果我在我的规范中写下

 mockService.getObservable1.and.returnValue(Observable.of('foo'))

 mockService.getObservable2.and.returnValue(Observable.of('bar'))

比我的组件中observable1$observable2$不会连续发出......

如何在我的规范observable2$之后observable1发出?

1 个答案:

答案 0 :(得分:1)

如果您需要先使用结果,可以使用switchMap()

Observable.of('foo').switchMap(foo => Observable.of(foo + 'bar'))
  .subscribe(res => console.log(res)) // 'foobar'

如果您只想在每个人到达时获得结果,请使用forkJoin()

Observable.forkJoin( Observable.of('foo'), Observable.of('bar'))
  .subscribe(res => console.log(res)) // 'foo', 'bar'