Мне нужно несколько разных полностраничных примеров DOM для моего набора тестов qUnit - PullRequest
9 голосов
/ 28 марта 2011

У меня есть небольшое количество Javascript для тестирования, но он работает на всей странице, например, находит элементы по пронумерованным идентификаторам, таким как "# t34". Мне нужно создать несколько разных страниц, чтобы протестировать разные возможные конфигурации. Я вижу, что могу использовать qunit-fixture для создания дерева DOM для доступа к тестам, но каждая конфигурация страницы должна быть полной страницей, так как она найдет элементы по идентификатору.

Различные учебники qUnit, похоже, сосредоточены на простых примерах функций чистого Javascript, выполняющих простую арифметику. Мне нужна помощь в понимании того, как создать настоящий набор тестов, используя несколько различных файлов.

Обновлено с более подробной информацией: я владелец cover.py , инструмента покрытия кода Python. Он генерирует отчеты в формате HTML. В этих отчетах есть jQuery, чтобы добавить немного интерактивности. Я добавляю намного больше, и хотел бы автоматизировать тестирование. HTML выглядит вот так . Сервер не задействован, это просто файлы, записанные в локальный каталог, поэтому для ajax нет возможности. Я хотел бы выполнить свои тесты для ряда различных конфигураций страниц, в основном, для крайних случаев кусков кода красного и зеленого цвета.

Поскольку мой код обращается к исходным строкам по номеру, например $("#t123") (например), я не могу иметь более одной «страницы» HTML в одном и том же DOM, поскольку идентификаторы будут конфликтовать. Как я могу запустить qUnit для разных страниц HTML?

Ответы [ 2 ]

5 голосов
/ 28 марта 2011

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

Вы можете выполнить рефакторинг для каждого теста настройки и демонтажа, используя метод модуля: http://docs.jquery.com/QUnit/module

В этом случае звучит так, что хорошим вариантом будет использование (синхронных) запросов ajax для каждого теста, загружая нужную разметку страницы в элемент # qunit-fixture. Таким образом, вам потребуется только пользовательская настройка, так как после этого QUnit будет сброшен.

Даже если вы имеете дело только с локальными файлами из файловой системы, если они находятся в том же каталоге, что и ваш файл testsuite, вы сможете загружать их через ajax.

Если нет, достаточно просто запустить локальный сервер, например через "open http://localhost:8080/ && python -m SimpleHTTPServer 8080" в этом каталоге.

1 голос
/ 28 марта 2011

Для тестирования полной страницы и DOM я бы использовал что-то вроде Selenium http://seleniumhq.org/ Так как вы немного знакомы с JS-тестированием, вы можете также рассмотреть http://www.phantomjs.org/ и http://zombie.labnotes.org/

С их помощью вы в основном используете сервер node.js для загрузки страницы, с которой у вас есть полный доступ к DOM в командной строке node.js или через сценарии.Думайте об этом как о сценариях firebug в командной строке (в качестве альтернативы плагин firebug может делать то же самое).Вы можете сделать утверждения, чтобы увидеть, что ваши идентифицированные элементы существуют, и переключать элементы щелчка и тому подобное.

(кстати, я тоже был в bocoup: D)

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