Тестирование RxJS от А до Я. Marble Diagrams и все прочие способы.

Как писать тестируемый/переиспользуемый/поддерживаемый/простой для понимания код на RxJS? Один из ответов - начать покрывать stream'ы unit-тестами. Лишь качественно написанный код возможно всесторонне протестировать. ❓ Чему мы научимся в этом Tech-Talk'е: Для чего писать unit-тесты на RxJS код? Какие есть способы тестирования Rx потоков? Тестирование Rx через async/await Что такое Marble диаграммы? Как тестировать при помощи Marble диаграмм? Какие есть подводные камни в тестировании на marble'ах? Примеры из видео:
💁 Введение: 00:00 - План, Цели, Мотивация 02:40 - Где скачать примеры кода? 03:26 - Подходы к тестированию RxJS 04:17 - О runner'е тестов. WallabyJS 🙅 Часть 1. Без marble'ов 04:54 - Subscribe & assert. Ложно позитивные тесты. 07:28 - Тестирование асинхронных потоков + ловушки. 08:56 - Тестирование через async/await + подводные камни. 09:51 - Тестирование через toArray() + медленные тесты 10:58 - Тестирование Interval'ов 12:10 - Тестирование и отлов ошибок в потоке 📚 Часть 2. Теория. Использование Marble-диаграмм. 14:19 - Введение в marble-диаграммы. Теория. Синтаксис. Цели. 17:56 - Тестирование на marble'ах без вспомогательных библиотек 18:58 - Пример простейшего теста 19:46 - Как читать ошибки? 20:53 - .toBe(): Подстановка значений в буквы (a-z) на диаграммах 22:45 - Тестирование момента подписки/отписка 26:09 - hot(): тестирование горячих и холодный потоков 32:34 - Грабли в тестировании синхронных операций 33:21 - Тестирование таймеров/синтаксис записи времени 34:29 - Синтаксис тестирование ошибок/исключений в потоках 35:37 - Как протестировать бесконечный/не completed поток 🎯 Часть 3. Практика. Разбор реального примера. 37:08 - Обзор мини-приложения которое будем тестировать 39:20 - Нюанс. Как не оборвать основной поток при ошибке. 40:04 - Как писать RxJS код, что бы он был тестируемый 41:07 - Тесты на ф-ю breweryTypeahead 41:10 - 1. Тест задержки. debounceTime(), тайминги 43:16 - 2. Тест отмены запроса. switchMap() 45:17 - Вопрос: Почему люди путаются тайминги? 48:46 - 3. Тест отсутствие дубликатов. distinctUntilChanged() 49:48 - 4. Тест правильной обработки ошибки. 🏄‍♂ Выводы: 50:47 - Плюсы/минусы тестов на marble'ах 52:04 - Обзор вспомогательной библиотеки rxjs-marbles 53:17 - НЕ пишите марблы на старом RxJS (ниже v6) 54:10 - Повторяем от А до Я за 2 минуты 55:12 - Подписывайтесь и всего наилучшего ✋ PS: Приношу извинения за не очень высокое качество текста на видео. Осталась только такая запись, решил лучше выложить так чем никак.

Смотрите также