testing - Какая лучшая структура тестирования для использования с Node.js?




frameworks (6)

Если вы хотите создать истинную структуру 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

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

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


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

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

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

Вы также можете просмотреть список тестовых фреймворков JavaScript here

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

  • ReadyJS наблюдает ваши файлы js и тестирует их с помощью JSHint
  • Concrete небольшой сервер непрерывной интеграции
  • Jezebel непрерывное тестирование на жасмин
  • Nosey не совсем там, но есть хорошая дорожная карта, поэтому я слежу за ней

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

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

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


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

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

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

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

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


Обновить:

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

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

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

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

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

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

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

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

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

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


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

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

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


свойство module.exports или объект экспорта позволяет модулю выбирать, что должно быть передано приложению

У меня есть видео на module_export, доступное here





testing frameworks node.js