Подтвердить что ты не робот

Введение в модульное тестирование в javascript

Я никогда не тестировал в javascript. Знаю, знаю. Но причина в том, что я никогда не создавал большие приложения для JavaScript, поэтому я никогда не видел никаких причин для тестирования.

Но теперь я подумал о том, чтобы время взломать.

Единственная проблема заключается в том, что везде, где я иду, каждая структура тестирования, похоже, полагается на то, что люди уже знают, как тестировать с помощью javascript, они сосредоточены только на том, почему их структура тестирования лучше, чем следующая.

Что бы я хотел, это очень простое введение в тестирование с помощью javascript. Когда это необходимо? Что вы должны проверить? Как должны быть настроены тесты? Как часто вы тестируете? Вы знаете, просто очень, очень простой материал.

Таким образом, любые ссылки на тексты или видео будут высоко оценены (:

Спасибо.

изменить: Просто чтобы ясность: то, что я ищу, - это введение в тестирование, а не конкретные рамки. Потому что прямо сейчас я даже не знаю, зачем мне проверять...

И если есть какие-то книги по этому вопросу, это будет еще лучше.

2nd edit: Я нашел действительно приятное видео из Николас Закас на Yahoo! Театр, где он сначала объясняет практику TDD для javascript, а затем объясняет, как использовать тестирование YUI для достижения этих целей.

4b9b3361

Ответ 1

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

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

Например, у вас может быть часть вашего приложения, которое просматривает все узлы DOM в документе для поиска и привязки к узлам, которым это нужно. Вы решили оптимизировать это, возможно, используя селектор jquery. Если у вас есть тест на то, что все возможные узлы могут быть найдены правильно, вы можете быстро увидеть, что изменения, которые вы только что сделали, сломали что-либо в любом из ваших целевых браузеров.

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

В принципе, как и в других языках, модульные тесты в JS позволяют автоматизировать ответ на вопрос "я просто сломал что-нибудь" с этими изменениями?

Ответ 2

Модульное тестирование в javascript, хотя и удивительное, вероятно, не является комплектом восхитительности, что модульное тестирование на большинстве других языков.

Основная причина этого в том, что javascript настолько зависит от того, на каком браузере он работает - плюс асинхронное поведение настолько вездесущее, что для него может быть немного сложно начать.

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

Джон Ресиг сделал отличную запись о ограничениях на тестирование в javascript, который мог бы стать достойным местом для начала.

Здесь видео, чтобы начать писать тесты для javascript BDD в fireunit.

Ответ 3

Я нахожу Javascript unittesting, часто необходимый для вызовов XHR (AJAX). Вы пишете unittests, чтобы утверждать, что ответ - это то, что вы ожидаете от него. Тестируемая разработка на сервере и на стороне клиента может помочь вам углубить проблему - достаточно ли отправленных параметров? Есть что-то, искалеченное на пути? Является ли сериализатор таким, каким я его ожидаю? Тесты устанавливаются так же, как и в любой другой среде, - уменьшают и упрощают ее, чтобы изолировать проблему.

Для самых простых вещей я рекомендую начать отладку с помощью Firebug (установка контрольных точек и т.п.), а затем перейти к unittesting с помощью Selenium.

Ответ 5

JsUnit (больше не поддерживается)

JsUnit - это модульная система тестирования для клиентский (в браузере) JavaScript. Это, по сути, порт JUnit, чтобы JavaScript. Также включен платформа для автоматизации выполнения тестов на нескольких браузерах и несколько машин, работающих на разных OSs.