Как выполнить юнит-тест в JavaScript?(правильный путь) - PullRequest
4 голосов
/ 22 августа 2011

Я пробовал разные библиотеки модульного тестирования js, но до сих пор не знаю, как правильно это сделать.

Есть ли консенсус по этому вопросу?

ДляНапример, я попытался написать несколько тестов для библиотеки модальных окон с помощью QUnit (библиотеки модульного тестирования, используемой jQuery), но она должна быть запущена в браузере, и она не скрывает эффекты, которые я тестирую, или другиераздражающие вещи, такие как оповещения (я даже не знаю, возможно ли это в js).На языке сервера любой вывод, сгенерированный набором тестов, будет отправляться в буфер и отбрасываться после каждого теста.

Если предупреждения, манипуляции с DOM и подобные вещи не являются инкапсулируемыми в jsтестирование, стоит ли писать тесты на этом языке?

Ответы [ 2 ]

4 голосов
/ 22 августа 2011

Тестирование кода внешнего интерфейса (html, css, javascript) - непростая задача, главным образом из-за проблем с несколькими браузерами, которые требуют визуального тестирования, например. убедитесь, что элемент правильно расположен во всех браузерах.

Чтобы протестировать свой код JavaScript, вы должны написать его «тестируемым» способом. Я лично нашел этот пост очень полезным: http://www.adequatelygood.com/2010/7/Writing-Testable-JavaScript

Что касается самого тестирования, попробуйте объединить QUnit (который вы уже используете) с http://funcunit.com/. FuncUnit позволяет открывать HTML-страницу и запускать тесты на ее домене. В доме есть пример, показывающий, как это делается.

1 голос
/ 22 августа 2011

Если вас действительно раздражают изменения DOM и другие эффекты (оповещение, подсказка), вы можете использовать насмешки и шпионаж, чтобы гарантировать, что эти изменения намечены.

См. Жасмин BDD, включающий насмешку и шпионаж, или SinonJS для автономной библиотеки.

Тогда вы можете просто написать такой тест (используя Sinon):

var mock = sinon.mock(window);
mock.expects("alert").once().withExactArgs("foo");

alert("foo");

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