Модуль модульного тестирования для node.js, который специально поддерживает тестирование асинхронного кода? - PullRequest
36 голосов
/ 20 марта 2011

В списке модулей node.js указано более 30 фреймворков для тестирования ...

Какие фреймворки наиболее популярны?И каковы их плюсы и минусы?

Я ищу фреймворк, который поддерживает модульное тестирование кода, который имеет много асинхронных обратных вызовов (вероятно, как и большинство других проектов узлов).Кроме того, я ищу что-то довольно простое и маленькое, чем сложное.

До сих пор я изучал:

  • Узел Nodeunit прост и поддерживает асинхронныйкод, позволяя вам определить, сколько утверждений вы ожидаете, и когда тест будет выполнен.
  • Vowsjs выглядит интересно.Позволяет вам хорошо структурировать тесты и имеет множество дополнительных функций.Не уверены, что эти функции действительно полезны, на самом деле, или они скорее мешают вам?

Ответы [ 6 ]

35 голосов
/ 21 марта 2011

expresso и vows являются наиболее популярными вариантами.Хотя есть много хороших вариантов там. Обновление: По состоянию на ноябрь 2011 г., Мокко является преемником expresso , согласно Readme.md в хранилище expresso , should.js часто используется с Мокко для разрешения утверждений в стиле BDD.

Что бы вы ни выбрали, я рекомендую использовать осторожно для заглушки ядраили сторонние модули.

Я использую / поддерживаю тестостерон , небольшую платформу для тестирования, которая запускает тестирование на последовательном порту, поэтому вы можете осторожно злоупотреблять.Хотя не так много людей используют его.

9 голосов
/ 15 июня 2012

С марта 2012 года мы используем Nodeunit и не оглядываемся назад.С ним легко и просто работать, он позволяет вам выбирать между осветителями на уровне модулей и на уровне класса (настройка / отрыв), у него есть разумный набор встроенных утверждений, а его инструмент командной строки очень гибок.Попробуйте также объединить его с nodemon .

Мы кратко рассмотрели Vows, но не хотели совершенно нового странного синтаксиса для определения тестов.Все, что вам нужно, - это утверждения, приспособления и приличный жгут, а Nodeunit идеально подходит для всех.

2 голосов
/ 04 декабря 2012

Я еще не использовал его, но как насчет Жасмин от Pivotal Labs?

2 голосов
/ 20 марта 2011

QUnit так просто, как может получить инфраструктура тестирования, и поддерживает асинхронные вызовы.Это инструмент тестирования для JQuery, поэтому вы можете быть уверены, что он хорошо поддерживается и хорошо работает.

Вы можете рассмотреть возможность интеграции с Sinon , который представляет собой фреймворк, который, в частности, позволяетвам подделать асинхронные события. Этот урок и другие связанные с ним части урока показывают, как использовать Sinon для тестирования асинхронного кода.Он находится в браузере, но вы сможете адаптировать его для тестирования приложений узла.

0 голосов
/ 18 мая 2014

test-studio - это пакет npm, предоставляющий мощный веб-интерфейс для модульного тестирования.В настоящее время он поддерживает только mocha и предоставляет такие вещи, как выполнение отдельных или групп тестов и включение инспектора узла в отдельные тесты.

Подробнее об этом здесь .

0 голосов
/ 30 апреля 2013

Незначительный плагин для моей собственной библиотеки, но что более важно, я просто хочу, чтобы другие разработчики проводов подумали о том, как должно выглядеть асинхронное тестирование в JS:

Я написал специально OKJS , потому что QUnitбыло так бесполезно асинхронно.QUinit не может перехватывать исключения (!) И требует хакерской start () для отслеживания глубины.

Во многих тестовых средах отсутствует простая оболочка обратного вызова для тестирования тайм-аутов и перехвата исключений.Я не уверен, почему --callbacks лежит в основе асинхронной разработки.= /

  setTimeout(function() {
    ok( true, "Passed and ready to resume!" );
    start();
  }, 1000);

OKJS отлавливает исключения в прослушивателях событий и отслеживает невыполненные асинхронные запросы с помощью встроенного триггера мертвецов, который может не пройти тест.

  setTimeout( unit.callback("test callback is fired"), 500);
  setTimeout( unit.callback("callback fired, with subtests", function () {
        unit.assert("in callback, true === true", true,true);
  }),  500);

Хотелось быувидеть этот стиль поддержки из корпоративных решений.Некоторые другие функции, для которых выступает OKJS, - это тестовые блоки, которые выполняются последовательно (стиль рецепта), но ожидают между блоками, чтобы события были разрешены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...