2012-06-13 5 views
10

Я ищу для преобразования из тестов Jasmine в тесты Mocha из-за его способности делать до (все), возможности его отчетности и поддержку coffeescript.Поддержка совместимых с Mocha

Одна вещь, которую я не смог найти, заключается в том, поддерживает ли Mocha (или в сочетании с совместимой библиотекой утверждений) такие приспособления, как jasmine-jquery (https://github.com/velesin/jasmine-jquery). Существует ли такая функция для Mocha?

Я пытаюсь протестировать некоторый код в браузере (так что я буду запускать его с помощью тестового бегущего html), который управляет DOM. Я не хочу использовать zombiejs, потому что я предпочел бы запустить его в среде, в которой я тестирую.

Редактировать: Просто для справки, ища решение, я наткнулся на использование grunt + mocha с фантомы. Это также не работает для моего случая, так как я бы хотел использовать пользовательскую версию webkit.

ответ

10

Из того, что я смог выяснить, ответ отрицательный. Вероятно, это связано с тем, что Mocha сначала предназначалось для поддержки node.js. В узле понятие светильников в jasmine-jquery не существует, потому что DOM/браузер не существует.

Глядя на поддержку светильников для плагина jasmine-jquery, я понимаю, что, возможно, не так сложно построить эту функциональность самостоятельно. Основным механизмом является использование jQuery для добавления внешнего внешнего шаблона в DOM, сохраняя при этом ссылки на него, чтобы можно было очистить и кэшировать.

Я буду обновлять этот ответ, если я решу выпустить что-то на GitHub

Edit: здесь - https://github.com/badunk/js-fixtures. Код и спецификации были по существу скопированы из jasmine-jquery с удаленными зависимостями.

+0

Является ли js-fixtures также репликацией загрузки JSON, например 'getJSONFixture()' в jasmine-jquery? –

+0

Нет, это не поддерживается в настоящий момент - я буду рассматривать его как усовершенствование. Приветствуем PR: https://github.com/badunk/js-fixtures/issues/12 – badunk

+0

Это все еще так? В Mocha есть функции настройки и разблокировки, и они поддерживают запуск тестов в браузере. – Indolering

0

Вы пытались zombie.js? Он устанавливается с помощью NPM и кажется довольно агностичным для проверки структуры.

Это дало мне полностью функционирующий оконный объект, который я мог бы украсить jQuery.

Browser = require 'zombie' 

browser = new Browser() 
global.window = browser.window 
require '../src/js/vendor/jquery-1.7.1.min.js' 

UPDATE:

Я вернулся к этой проблеме, и это выглядит как JQuery + jsdom (через НПМ), как представляется, является более популярным и легким решением. Пример: http://www.netboy.pl/2012/10/testing-jquery-code-with-mocha-chai-and-jsdom/

+0

Ссылка больше не работает. – CodingWithSpike

+0

JSDOM и Zombie немного проблематичны. Например, нет поддержки для 'classList',' dataset' и куча других вещей, которые я хотел использовать. Кажется, я возвращаюсь к фантомам с этим. –