Это верно. В RxJS 5 при подписке с subscribe
, если вы не установили обработчик error
, ошибка была просто повторно выдана. Вот почему ваш модульный тест работал раньше.
Но это не так, как в RxJS 6, потому что все необработанные ошибки перебрасываются в window.onerror
или process.on('error')
(в зависимости от вашей среды).
Что вы можете сделать, это сделать тестовую асинхронность и затем проверить, что один из описанных выше обработчиков был назван:
it('should do what I expect, done => {
process.once('error', () => done());
myComponent.mySubject.next({message: 'invalid'});
});
Это стиль mocha
, но я думаю, что в Жасмин это будет похоже.
На самом деле, то, что у вас есть, не очень хороший способ проверить наблюдаемые цепочки, потому что, обрабатывается ли ошибка или нет, зависит только от подписчиков, а не от абонента. Другими словами, вы не должны проверять, как эмиссия обрабатывается подписчиками.
Мне потребовалось некоторое время, чтобы найти соответствующий коммит, но прочитайте описание здесь https://github.com/ReactiveX/rxjs/commit/cd9626a4f93cac6f631d5a97dd9c9b2aa8e4b5db (упомянуто также в CHANGELOG.md
).