使用Jasmine Marble时在rxjs订阅中测试代码

时间:2019-04-18 07:39:34

标签: javascript typescript jasmine rxjs jasmine-marbles

我希望能够测试可观察的订阅中运行的代码:

function foo(someStream$: Observable<number>) {
  someStream$.pipe(
    map((x) => x + 3),
  ).subscribe((result) => {
    SomeService.someFunc(result)
  })
}

例如,我要确保someFunc()被调用result。我认为我应该能够做类似的事情

const someStream$ = cold('-a--', { a: 5 })
const someFuncSpy = spyOn(SomeService, 'someFunc')
foo(someStream$)

expect(someFuncSpy).toHaveBeenCalledWith(8)

问题是,我将被告知从未调用过someFunc。我不想将流和subscribe分离为单独的功能。

1 个答案:

答案 0 :(得分:0)

您可以使用Rx.Observable.of(5)而不是cold()通过可观察对象传递数字