2010-11-29 2 views
116

Я просмотрел довольно длинный список тестовых фреймворков по адресу https://github.com/ry/node/wiki/modules#testing. Каков опыт работы с этими структурами?Какая лучшая структура тестирования для использования с Node.js?

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

ответ

59

Update:

Mocha является лучшим на мой взгляд.


Каков опыт работы с этими рамками?

Я играл с expresso, который является довольно классным испытательным фреймворком, который также имеет тестовое покрытие. Он был создан TJ Holowaychuk, который также является создателем Express.js (безумно быстрая (и маленькая) серверная веб-платформа JavaScript для веб-разработки на основе Node.js и Connect.). Недавно я увидел, что у него также есть классная библиотека под названием should.js, которую можно использовать вместе с Expresso для еще лучшего тестирования.

Очевидно, способность работать в браузере будет большой бонус

Я не верю, что он может работать в браузере, но я не понимаю, почему вы хотели бы запустить его в браузере?

но меня больше всего интересует Node.js. Что-то с сильно асинхронным уклоном было бы здорово.

Цитата из эспрессо:

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

Вы можете использовать beforeExit для проверки асинхронных функций.


СОВЕТ: Следуйте TJ Holowaychuk на GitHub, потому что он создает очень хороший с открытым исходным кодом.

+0

Спасибо за ответ, я попробовал выразить, но обнаружил, что поддержка async не была очень интуитивной. (Для меня все равно) – doffm 2010-11-30 22:02:28

+3

В настоящее время я пытаюсь проголосовать (http://vowsjs.org/), что мне было легче понять. – doffm 2010-11-30 22:04:05

+0

vowjs также выглядели как хорошая тестовая среда. Мне нравится функция тестового покрытия expresso. Плюс я удивляюсь, что вы не поняли? – Alfred 2010-12-01 19:18:59

2

Я использую nodeunit, и его способность работать с асинхронными функциями достаточно проста.

Есть хорошее пошаговое руководство, которое должно подготовить вас к работе с nodeunit on his blog.

[Примечание: АНЯ изменилась с BlogPost - setUp(callback) и tearDown(callback) оба принимают обратный вызов в качестве аргумента, который необходимо вызвать, когда ваша установку/демонтаж завершен.]

6

Я начал использовать Jasmine для моего тестирования JavaScript именно потому, что он мал и работает как в браузере, так и в узле. Он также обладает действительно надежным API отчетов и сопоставления, поэтому его легко интегрировать с другими инструментами в будущем. Наличие встроенной фальшивой структуры также полезно, так как это часто одна из первых вещей, которые я бы добавил, когда я использовал qunit для TDD в браузере.

14

Основываясь на комментариях вышеперечисленного, я опробовал vows, и он решил множество проблем, которые у меня были с моим асинхронным тестированием. Его способность сочетать серийное и параллельное тестирование является удивительной.

Удостоверьтесь, что вы внимательно прочитали руководство, но как только вы его повесили, он гибкий, мощный и производит приятные, чистые результаты.

ОБНОВЛЕНИЕ: Я бы также посоветовал людям проверить should для своих утверждений. Он позволяет использовать очень гибкие, очень читаемые утверждения и совместим с Expresso и Vows, а также с большинством других тестовых платформ.

(Я отправляю это как отдельный ответ только в случае, если люди не замечают комментарии к ответу Альфреда.)

UPDATE 1/7/2015: Для чего это стоит, я с тех пор перешли от Обещает Мокке, а от Мески к Чаю. Mocha теперь имеет гораздо лучшую поддержку для асинхронных тестов с использованием обещаний, а Chai позволяет использовать несколько гибких опций assert, включая expect api, для тех, кто не любит изменять прототип объекта.

40

Я использую VowsJS, который прост в использовании async BDD framework (Behavior Driven Development) и выполняет свою работу.

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

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

Вы также можете просмотреть список тестирования JavaScript каркасов here

еще несколько LIBS, которые могли бы помочь вам лучше писать код таковы:

  • ReadyJSчасы ваши JS файлы и проверить их с JSHint
  • Concreteмаленький continuous integration сервер
  • Jezebelнепрерывного тестирования для Жасмин
  • Noseyне совсем там, но есть хороший план, так что я держать глаз на нем

Существует также Bamboo CI Server по Atlassian автоматизирует сборки и испытания. Это пакет для Apache/Tomcat(который sux, потому что он использует Java и делает его очень тяжелым) также не является бесплатным, но у него есть starter license which costs $10, поэтому я считаю, что он доступен по цене. Это самый признанный из всех серверов CI, которые я нашел до сих пор, и поддерживает все модульные тесты, поддерживающие xUnit, что означает, что вы можете запускать сборки/тесты для любого языка с помощью Bamboo.

Другим вариантом для CI с NodeJS является Travis, который много людей использует для своих проектов с открытым исходным кодом, так как он говорит . Постоянная служба интеграции для сообщества с открытым исходным кодом.

Существует также обсуждение группы google с вопросом Continuous Integration for Node JS Projects.

2

Если вы хотите настоящую структуру BDD, то, возможно, рассмотрите Yadda. Он объединяется с моккой, жасмином, узловым узлом, qunit, зомби и casperjs для поддержки файлов функций, например.

Scenario: provides the version of all services 
     given service x is running 
     and service y is running 
     when I request the service versions 
     then service x should be version 0.0.1 
     and service y should be version 0.0.2 
Смежные вопросы