Испытание мрамора Rxjs

Попытка понять, каков наилучший способ модульного тестирования подписки RXjs 5. Так, например, если у меня есть сложная цепочка наблюдаемых и некоторая бизнес-логика внутри блока подписки, как мне это проверить? варианты, которые я вижу:

  1. Используйте планировщик тестов с операторами advanceBy (аналогично тому, как вы это делали в rxjs 4)
  2. Тестирование мрамора, но, насколько я понимаю, тестирование мрамора охватывает только наблюдаемое, поэтому вы можете проверить, что будет выходом наблюдаемой цепочки, в соответствии с определенным входом, но этот тест не охватывает блок подписки...

любые советы или идеи будут очень полезны

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

Другие вопросы по тегам