Тестирование JavaScript-кода на стороне клиента с помощью Jasmine и node.js - PullRequest
5 голосов
/ 01 марта 2012

Дано: код JavaScript на стороне клиента (запускается в браузере, использует jquery и т. Д.). В настоящее время код тестируется с Rhino и envjs. Мы хотели бы перейти на node.js. Однако после некоторого исследования не удалось найти никаких envjs -подобных дополнений, которые имитируют браузер.

При работе node.js «как есть» отсутствуют даже такие базовые возможности, как alert() или window.

Существует ли стандартная связка, аналогичная Rhino & envjs для node.js, пожалуйста?

Ответы [ 2 ]

9 голосов
/ 01 марта 2012

Вы можете использовать zombie.js , в котором есть все необходимое для тестирования.Или вы можете использовать jsdom (который zombie.js использует для внутреннего использования), чтобы получить DOM в node.js и выполнить ваши тесты на этом DOM.

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

Вот простой пример с jsdom:

var jsdom = require("jsdom");

jsdom.env(url, ["http://code.jquery.com/jquery.min.js"], function(err, window) {
    // jQuery is at window.$
});

Вместо url выше, вы можете иметь HTML-документ или фрагмент.

Вы также можете загрузить страницу и извлечь любые внешние ресурсы, вместо предоставления jQuery и т. д. непосредственно в jsdom:

var jsdom = require("jsdom").jsdom,
    doc = jsdom(markup),
    window = doc.createWindow();

// Do your stuff on window, jsdom will have fetched all the scripts referenced in the markup

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

2 голосов
/ 01 марта 2012

Для этого есть два варианта

  1. Ваш код браузера для тестирования.Запустите его в браузере.Эмуляция браузера вовсе не доказывает, что ваш код работает.
  2. Используйте такой инструмент, как фантом / зомби

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

Вы также можете использовать управляемые сервисы, такие как testling , чтобы запускать тесты браузера для вас

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