Я думаю, что проблема в том, что вам не следует проверять, чтобы операторы назывались вот так с самого начала.
Операторы как в RxJS 5, так и в RxJS 6 - это просто функции, которые только "делают рецепт"цепь построена.Это означает, что проверка того, были ли вызваны tap
или catchError
, ничего не говорит вам о ее функциональности или о том, работает ли цепочка вообще (это может вызвать исключение для любого значения, и вы не сможете его протестировать).
Поскольку вы используете RxJS 6, вам лучше проверить цепочку, отправив значения через нее.Это хорошо документировано и довольно просто сделать https://github.com/ReactiveX/rxjs/blob/master/doc/marble-testing.md
В вашем случае вы можете сделать что-то вроде этого:
const testScheduler = new TestScheduler((actual, expected) => {
// some how assert the two objects are equal
// e.g. with chai `expect(actual).deep.equal(expected)`
});
// This test will actually run *synchronously*
testScheduler.run(({ cold }) => {
const next = {
handle: () => cold('-a-b-c--------|'),
};
const output = interceptor.intercept(null, next);
const expected = ' ----------c---|'; // or whatever your interceptor does
expectObservable(output).toBe(expected);
});
Я думаю, вы поймете, что это делает ...