1. Что такое кунит
QUNIT (http://qunitjs.com/) - очень мощная структура тестирования модуля JavaScript, которая может помочь вам отладить ваш код. Он был написан членами команды JQUERY и является официальным тестовым набором для jQuery. Но QUNIT, как правило, достаточно, чтобы проверить любой обычный код JavaScript, он может даже проверить JavaScript на стороне сервера с помощью некоторых двигателей JavaScript, таких как Rhino или V8.
Если вы не знакомы с концепцией «модульного тестирования», пожалуйста, не волнуйтесь. Это не очень сложно понять:
Кода -копия выглядит следующим образом:
При компьютерном программировании модульное тестирование (также известное как тестирование модуля) - это тест, который выполняет правильную тестирование на программных модулях (наименьшая единица проектирования программного обеспечения). Блок программы является наименьшим тестируемым компонентом для приложения. В процессуальном программировании единица - это единая программа, функция, процедура и т. Д.; Для объектно-ориентированного программирования наименьшая единица-это метод, включая методы в базовых классах (суперклассии), абстрактные классы или полученные классы (подклассы). ―Cted из Википедии.
Проще говоря, вы пишете тесты для каждой функции вашего кода, и если все эти тесты проходят, то вы можете быть уверены, что код не является ошибочным (обычно это зависит от того, насколько тщательно находится ваш тест).
2. Почему вы хотите проверить свой код
Если вы никогда раньше не писали каких -либо модульных тестов, вы можете напрямую загружать свой код на веб -сайт, нажмите некоторое время, чтобы увидеть, возникают ли какие -либо проблемы, и попытаться решить проблемы, которые вы нашли. Там будет много проблем с этим методом.
Прежде всего, это очень раздражает. Нажатие на самом деле не является простой работой, потому что вы должны убедиться, что все нажимается, и есть большая вероятность, что вы пропустили один или два.
Во -вторых, все, что вы делаете для тестирования, не используется повторно, что означает, что его трудно регрессировать. Что такое возврат? Представьте, что вы написали какой -то код и протестировали его, исправите все недостатки, которые вы нашли, а затем опубликуйте его. На этом этапе пользователь отправляет некоторые отзывы о новых недостатках и требует новых функций. Вы возвращаетесь к коду, исправляете эти новые недостатки и добавляете новые функции. Далее может произойти то, что некоторые старые недостатки вновь появляются, что называется «возврат». Послушайте, теперь вам нужно снова щелкнуть, и возможно, что вы не можете найти эти старые недостатки бремени; Даже если вы это сделаете, потребуется некоторое время, чтобы выяснить, что ваша проблема вызвана регрессией. Используя модульные тесты, вы записываете тесты, чтобы найти дефекты, и после изменения кода вы снова профитрируете через тест. Если регрессия произойдет, некоторые тесты определенно потерпят неудачу, и вы можете легко распознать их и знать, какая часть кода содержит ошибку. Теперь, когда вы знаете, что вы изменили только сейчас, это может быть легко решено.
Еще одно преимущество модульного тестирования, особенно для веб-разработки: это облегчает тестирование совместимости кросс-браузера. Просто запустите свои тестовые примеры в разных браузерах. Если есть проблема с одним браузером, вы исправляете его и перезапустите эти тестовые примеры, чтобы убедиться, что в других браузерах нет регрессии. После того, как все они пройдут тест, вы можете с уверенностью сказать, что все целевые браузеры поддерживают его.
Я хочу упомянуть проект Джона Ресига: Testswarm (http://testswarm.com/). Он выходит на JavaScript Unit Testing на новый уровень, делая его распределенным, это веб -сайт, который содержит много тестовых случаев, которые любой может пойти туда, чтобы запустить некоторые тестовые случаи, а затем вернуть результаты на сервер. Таким образом, код будет очень быстро протестирован в разных браузерах или даже работает на разных платформах.
3. Как писать модульные тесты с QUNIT
Итак, как вы правильно писать модульные тесты с QUNIT? Во -первых, вам нужно настроить тестовую среду:
Кода -копия выглядит следующим образом:
<! Doctype html>
<html>
<голова>
<title> QUnit Test Suite </title>
<link rel = "styleSheet" href = "http://github.com/jquery/qunit/raw/master/qunit/qunit/qunit.css" type = "text/css" media = "screen">
<script type = "text/javascript" src = "http://github.com/jquery/qunit/raw/master/qunit/qunit/qunit.js"> </script>
<!-Ваш файл проекта идет сюда->
<script type = "text/javascript" src = "myproject.js"> </script>
<!-Ваш файл тестов идет здесь->
<script type = "text/javascript" src = "mytests.js"> </script>
</head>
<тело>
<h1 id = "qunit-header"> QUnit Test Suite </h1>
<h2 id = "qunit-banner"> </h2>
<div id = "QUnit-Testrunner-toolbar"> </div>
<h2 id = "qunit-useragent"> </h2>
<ol id = "qunit-tests"> </ol>
</body>
</html>
Как вы можете видеть, здесь используется управляемая фрейв -версия QUNIT.
Код, который будет протестирован, был добавлен в myProject.js, и ваш тест должен быть вставлен в mytest.js. Чтобы запустить эти тесты, просто откройте HTML -файл в браузере. Теперь пришло время написать некоторые тесты.
Краеугольным камнем модульного тестирования является утверждение:
Утверждение - это предложение, которое предсказывает результат возврата вашего кода. Если прогноз является ложным, а утверждение не удается, вы знаете, что что -то не так.
Запустите утверждения, и вы должны поместить их в тестовый пример:
Кода -копия выглядит следующим образом:
// Давайте проверим эту функцию
функция iseven (val) {
вернуть val % 2 === 0;
}
test ('iseven ()', function () {
ОК (Iseven (0), «ноль - равномерное число»);
ОК (ISEVEN (2), 'так же два');
ОК (ISEVEN (-4), «Так же отрицательная четыре»);
ОК (! Iseven (1), «Один не равномерное число»);
ОК (! ISEVEN (-7), «Ни один из них не является негативным»);
})
Здесь мы определяем функцию: ISEVE, которая используется для определения того, является ли число нечетным числом, и мы хотим проверить эту функцию, чтобы подтвердить, что она не вернет неправильный ответ.
Сначала мы называем тест (), который строит тестовый пример; Первый параметр - это строка, которая будет отображаться в результате, а второй параметр - это функция обратного вызова, которая включает нашего прерванного мастера.
Мы написали 5 утверждений, все из которых являются логическими. Логическое утверждение, которое ожидает, что его первый аргумент будет правдой. Второй параметр по -прежнему остается сообщение, которое будет отображаться в результате.
Вот что вы хотите получить, пока вы запускаете тест:
4. Глубокая ссылка на обучение
Вышеуказанное лишь кратко представляет QUNIT.JS, и есть много методов утверждения. Для получения подробной информации, пожалуйста, обратитесь к документации API:
http://api.qunitjs.com/
Модульное тестирование - это очень хороший способ проверить ваш код, прежде чем публиковать его. Если вы не писали каких -либо модульных тестов раньше, сейчас самое время начать!