Почему библиотеки тестов Node.js Tape и AVA (последние заимствованы из Tape) использовали потоки Node.js для представления тестов?

75
9

спросил(а) 2020-06-07T22:47:38+03:00 3 месяца, 1 неделя назад
1
Лучший ответ
80

Читаемые потоки - это идеальный способ представить что-то, что генерирует события. В системах POSIX вы можете иметь / dev / mouse в качестве потока, который генерирует спорадический ввод. Та же концепция существует в Node.js.

Как выясняется, бегун-тестер - это тоже нечто, что вызывает спорадические события. Он запускает тесты и дает вам знать, когда тест запускается, и когда он проходит / не проходит, и когда весь комплект завершается.

Если пойти немного дальше, возможно, вопрос проистекает из более глубокого вопроса: зачем использовать Streams? Почему бы не использовать что-то еще, например EventEmitter, или асинхронные обратные вызовы? Чтобы ответить на этот вопрос, давайте попробуем построить 2 гипотетических конкурирующих тестовых фреймворка:

Простая среда тестирования, которая запускает ваши тесты и печатает выходные данные TAP на стандартный вывод. Менее простая среда тестирования, которая запускает ваши тесты и позволяет вам с помощью событий узнать, что что-то произошло.

Если вы создали # 1, то, поздравляю, вы только что создали "основанный на потоке" тестовый фреймворк. Это было бы похоже на ленту, за исключением того, что ваш поток зафиксирован, чтобы указывать на process.stdout. Что если вы сделали это настраиваемым? Скажем, если он был реализован как читаемый поток, который вы можете направить в process.stdout (или что-то еще), как вам нравится? Большой! Вы только что создали свою собственную версию ленты.

Если вы создали # 2, то, поздравляю, вы также только что создали "основанный на потоке" тестовый фреймворк ... вы просто еще этого не знаете. В конце концов, поток для чтения - это просто еще один способ выразить наблюдаемый объект, который генерирует события. Если вы собираетесь сделать TAP-репортер для этой гипотетической среды тестирования, то все, что вам нужно будет сделать - это преобразовать события в поток данных.

ответил(а) 2020-06-07T22:47:38+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема