Испытание мрамора Rxjs
Попытка понять, каков наилучший способ модульного тестирования подписки RXjs 5. Так, например, если у меня есть сложная цепочка наблюдаемых и некоторая бизнес-логика внутри блока подписки, как мне это проверить? варианты, которые я вижу:
- Используйте планировщик тестов с операторами advanceBy (аналогично тому, как вы это делали в rxjs 4)
- Тестирование мрамора, но, насколько я понимаю, тестирование мрамора охватывает только наблюдаемое, поэтому вы можете проверить, что будет выходом наблюдаемой цепочки, в соответствии с определенным входом, но этот тест не охватывает блок подписки...
любые советы или идеи будут очень полезны
1 ответ
Если вы утверждаете, что наблюдаемое, возвращаемое из вашей цепочки, соответствует вашей мраморной диаграмме, вы также проверяете, что ваши методы-наблюдатели вызываются правильно. Если вы хотите проверить свои методы наблюдения, я бы сделал это самостоятельно.
При тестировании мрамора у вас есть возможность проверить, есть ли у вашего Observable подписка. Допустим, у вас есть, например, следующий источник наблюдения.
const source = m.hot("--^-a-b-c-|");
Затем вы можете проверить правильность подписки вашего обозреваемого:
const expectedSubscription = "^-------!";
m.expect(source).toHaveSubscriptions(subs);
Конечно, это зависит от того, какую версию вы используете и какую мраморную библиотеку вы используете. (синтаксис может быть разным). Существует также хороший блог, который дает вам хороший обзор всей темы. https://itnext.io/findings-about-rxjs-marble-testing-and-the-testscheduler-b23c6bdf6b49