Модульное тестирование Node.js [закрыто]

164

Существуют ли в настоящее время какие-либо хорошие платформы для модульного тестирования node.js (js на стороне сервера)? Я ищу что-то более глубокое, чем предоставленный модуль Assert.

отметка
источник

Ответы:

66

Я закончил тем, что использовал node-unit и действительно доволен этим.

Первоначально я использовал Expresso, но тот факт, что он запускает тесты параллельно, вызвал несколько проблем. (Например, использование фикстур базы данных не работает в этой ситуации).

evilcelery
источник
25
Expresso не заставляет вас запускать тесты параллельно. Подайте ему аргумент --serial, и он запустит их все в веселом порядке.
Эйнарос
3
Просто скачал и использовал nodeunit ... делает именно то, что говорит, с первого раза работал ftw!
Майкл Даусманн
1
Nodeunit немного странно с требованием, чтобы каждый тест вызывал .done()imho.
Кос
2
Если бы я начинал новый проект сейчас, я бы, вероятно, использовал Mocha в качестве основы тестирования
evilcelery
1
Nodeunit требует .done()размещения асинхронного тестирования. Я согласен, что иногда это может быть немного громоздко, но для этого есть веская причина.
L0j1k
48

Я также искал достойный тестовый фреймворк для узла и нашел Mocha . Он является официальным преемником Expresso и кажется очень зрелым.

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

Я попробую и доложу ...

РЕДАКТИРОВАТЬ:

После невероятного количества времени, посвященного другим проектам, я наконец вернулся к проекту Javascript и успел поиграть с мокко. Я могу серьезно рекомендовать использовать его. Тесты читаются очень хорошо, интеграция с gulp великолепна и тесты выполняются очень быстро. Мне удалось настроить автоматические автономные тесты, а также тесты в браузере (browserify) и соответствующие отчеты о покрытии кода примерно за полдня (большую часть времени я потратил на понимание того, как использовать browserify из gulp). На мой взгляд, мокко кажется очень хорошим выбором для тестовой среды.

ОБНОВИТЬ:

Я все еще очень убежден в Мокко. Интеграция с Chai позволяет подключать различные стили утверждений. Вы можете проверить рабочую настройку в этом проекте github . Сейчас я использую его с кармой, интегрирую отчет о покрытии кода, автоматические средства наблюдения и хорошую интеграцию с IntelliJ

bennidi
источник
Ссылка на проект github не работает. Не могли бы вы обновить его, пожалуйста?
karlisup
1
Начало работы с Мокко - brianstoner.com/blog/testing-in-nodejs-with-mocha
Николас Блазген
15

Лично я использовал только модуль assert, но мне также хотелось большего. Я просмотрел множество узловых модулей, и популярные фреймворки для юнит-тестирования являются node-unit и должны (что сделано тем же парнем, что и Expresso (может быть, обновленное имя?)

Клятвы также выглядит многообещающе.

jtsao22
источник
15
Я одобряю тебя только за этот каламбур.
Томас Реджи
15

Лично я придерживался Expresso , но есть множество различных фреймворков, подходящих для большинства стилей тестирования.

Джойент имеет обширный список ; попробуй.

einaros
источник
1
Expresso - единственный, который имеет смысл для меня, и правильно работает с асинхронным кодом. Пробовал обеты и тишину тоже.
Балуптон
5

vows - это солидная библиотека модульного тестирования для node.js, но синтаксис утомителен.

Я написал тонкую абстракцию под названием vows-fluent, которая делает API цепным.

И я написал еще одну абстракцию, [vows-is], которая основывается на vows-fluent и предоставляет синтаксис в стиле BDD.

Примером может быть

var is = require("vows-is");

is.suite("testing is fun").batch()

    .context("is testing fun?")
        .topic.is("yes")
        .vow.it.should.equal("yes")

.suite().run({
    reporter: is.reporter
});

Больше примеров

Raynos
источник
6
аминь тому, синтаксис обетов ужасен ИМО
Донн Фелкер
Поиграл с обетами с оберткой умиротворения. Выглядело как хорошая идея для тестирования API json, но быстро потерпел неудачу. Я также склонен находить, что API-интерфейсы, которые сильно ориентированы на цепочку вызовов, как это, трудно использовать и трудно отлаживать. Они хорошо выглядят в примерах, но плохо работают в реальных условиях.
drekka
@ Drekka обеты и обеты-это ужасно. использовать мокко
Райнос
Попробуйте сейчас, но, похоже, столкнулись с похожей кучей проблем.
Дрекка
Вы должны использовать это неправильно тогда. попробуйте прочитать gist.github.com/2896455 . @drekka
Райнос
4

Я думаю, что среди различных доступных сред тестирования mocha является самым последним и очень простым в реализации. Вот замечательный учебник о том, как его использовать: http://thewayofcode.wordpress.com/2013/04/21/how-to-build-and-test-rest-api-with-nodejs-express-mocha/

sam100rav
источник
Что ж, спасибо за ваш комплимент по поводу урока :)
s0nica
1

Если вы знакомы с QUnit , вы можете использовать node-qunit, который является своего рода оболочкой узла вокруг существующей инфраструктуры QUnit.

Zorayr
источник
0

Первоначально созданный для node.js, deadunit - это библиотека модульного тестирования javascript для node.js и браузера. Некоторые из его уникальных атрибутов:

  • Легкая кривая обучения
  • Может выводить результаты теста в командной строке (цветной или простой текст) или в виде HTML
  • Он распечатывает фактические строки кода, в которых находятся ваши утверждения, поэтому ваш вывод имеет смысл, даже если вы не тратите много времени на написание тестовых комментариев
  • Он имеет простое countутверждение, облегчающее работу с ожидаемыми исключениями, и асинхронные утверждения
  • он печатает исключение и любые прикрепленные данные, которые они имеют
  • он даст вам знать, если ваш код зависает (то, что вы не хотите, но обычно остается незамеченным)
  • Имеет управляемый событиями API, позволяющий передавать результаты тестирования по сети или любым другим способом.
  • Поддерживает тестирование с помощью узловых волокон
BT
источник
0

Я только что загрузил проект, который я использую для юнит-теста nodejs с помощью karma и Jasmine: narma . Ваши модули узлов загружаются в браузер nodewebkit, поэтому вы можете выполнять модули узлов и использовать библиотеки, такие как jquery, в одной и той же куче.

noamtcohen
источник
0

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

Подробнее об этом читайте здесь .

Отказ от ответственности: я автор.

Дейл Андерсон
источник
1
Похоже, это было написано вами, верно? если это так, вы должны раскрыть этот факт в своем ответе.
Струджи