Рубрики
Без рубрики

JS Тестирование с Mocha, 101

Начало работы Руководство по тестированию Mocha JS. Мощный способ тестирования передней и заднего кода.

Автор оригинала: Ethar Alali.

Тестирование JavaScript? Почему нет? Мы единилируем тестируйте все остальное (или должно быть). Только тестирование HTML, скажем, через Selenium, не тестируют JavaScript в Isolationio, потенциально оставляя пещеры в охвате кода, что делает труднее отслеживать проблемы или хуже, пропускает избежать ошибок в производство. Это, конечно, слишком поздно, чтобы обнаружить, что у вас есть их. Qas Примечание, ваша команда покрывает свой код JavaScript?

Бла …

Как и в случае с большинством вещей в программировании, проверка JavaScript является столь же формированным нашей целью, как то, как мы его бежим. Если мы нужны тесты JS сформировать часть автоматизированного процесса тестирования, интегрироваться с Jenkins, TeamCity, TFS или «вставить вашу любимую задачу или непрерывный интеграционный сервер здесь», мы, вероятно, в конце концов, работаем с Mocha, а также жасмин для в браузере Тесты или, возможно, карма, используя фантовые и построенные на верхней части узла js. Это мока, я собираюсь прикрыть в этой артике. Если мы хотели построить наши тесты JS на веб-страницу, чтобы прикрепить что-то вроде фитнеса (помните это?) Затем нам понадобится жасмин и тестовая страница жасмина, чтобы загрузить и запустить тесты.

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

Хотите следовать?

Нам понадобится следующие ингредиенты:

  • Узел js.
  • Mocha JS Фрейма тестирования и библиотека утверждения «Assert» (в комплекте с Mocha)
  • Windows, Linux или OSX
  • Работа в CLI (Windows: командная строка или Cygwin. Linux/Mac: bash)
  • Рабочие знания JavaScript – «Объектному ориентированному» JavaScript не является обязательным
  • Знакомство с TDD является преимуществом

Рецепт

Шаг 1: Установите окружающую среду

Oddjs.

Давайте начнем. Если вы еще этого не сделали, сначала установите аромат вашей системы узла JS;

https://nodejs.org/en/

Совет: пользователи Windows

Я позволил узеру добавить свой каталог на путь, позволяя мне использовать его из любого командного окна. Вам дан флажок для этого во время установки. Определенно проверь это! Это вступление предполагает, что у вас есть. Вы будете знать, если у вас нет, поскольку узел будет работать только в собственной командной строке, а не все командные подсказки.

Моча

Mocha развернут в виде упаковочного модуля узла (NPM).

После установки узла открыть командную строку [в качестве администратора, если вам нужно] и установить модуль узла Mocha, набрав:

npm install -g mocha

The -G-переключатель глобально устанавливает Mocha, чтобы он мог запускать из любого места в нашем каталоге, не только конкретный каталог, на котором мы запустили эту команду и установили его.

Примечание, библиотеки утверждения часто диктуют семантическую структуру или «смотреть» наших испытаний. Если вы выберете BDD-подобный язык, такой как Жасмин, используемый в Чай , это будет выглядеть по-другому. Я буду работать с Assert здесь, но принципы работают через Piste на другие библиотеки, такие как JS.

Шаг2: выстрел из моксы

После завершения установки открыть окно команд и сразу запустите Mocha, набрав

mocha

Примечание для пользователей Windows США, окно команд не должны быть открыты в режиме администратора.

Если вы новичок в Mocha, это оба великолепным способом почувствовать его, а также гарантирует модуль узла правильно.

На что это похоже? Похоже, это выглядит:

mochabasicrun.png.png.

Ничего захватывающего. Это говорит нам, что нет прохождения тестов, и все это бегало в 4 мс.

То, что это сделало, это запустить Mocha в каталоге, не нашел никаких модульных тестов (как нет) и вышел с зеленым сообщением «0 прохождения».

Важные заметки

Зеленый для хорошего, красный для плохого

Обратите внимание, что это производит «проходящие» сообщения в зеленом. В Mocha Green представляет все проходящие тесты и красные для неисправностей. До сих пор, так интуитивно понятно. Однако, если для метода для метода не определены тесты, он не будет осуществлять функцию, будет зеленым, если все остальное прошло, и это оставляет метод непрозрачно, отсюда и отверстие в кодовом покрытии. Я покрыл охват кода в предыдущем посте.

Мокские каталоги

Как новичок, есть один потенциал gogcha. По умолчанию каталог «Test» должен существовать относительно, откуда он работает. Mocha может найти тесты во всех подпадах при запуске со следующим выключателем из командной строки.

--recursive  
Нужна ли мне библиотека утверждения … Что такое библиотека утверждения?

Библиотека ASSERTION содержит некоторую форму проверки результатов для проверки тестов. Если вы когда-либо работали с «свободно» утверждениями ранее, это аналогично загружено через EntryJS и в JavaScript, тестирование библиотеки утверждения необходима. К счастью, большинство структур тестирования приходят с одним встроенным.

Шаг 3: Структура каталогов

Теперь давайте поработаем через настройку нашей настройки, чтобы запустить некоторые модульные тесты. Первый этап – создать структуру каталогов. Я создал следующее дерево каталога:

c:\spikes\mocha\      <-- Main subdirectory holding the classes/functions 
under test.

c:\spikes\mocha\test   <-- Which holds the unit-tests

Для этой статьи давайте TDD класс калькулятора, который выполняет четыре основных арифметических операции +, -/, и *

Шаг 4: Создание тестов с Assert

В подсчете «\ Test» создайте файл под названием Calculatortest.js и в верхней части этого файла, поставьте:

assert = require("assert");
Calculator = require("../Calculator.js").Calculator

При запуске Mocha узел следует по пути к библиотеке Assert или загружает его из реестра NPM по умолчанию на NPMJS.com, если это необходимо. Первая строка заявляет, что модуль «Assert» требуется от узла. Второе указывает требование для калькулятора, который является нашим объектом по тестированию, в родительском каталоге из нашей папки. После точки (.), Я также указываю фактический класс, который мы хотим использовать в качестве сокращенного.

Запуск Mocha теперь показывает, что наш пустой тестовый файл произвел одинаковое «0 прохождение», как раньше. Так что имейте в виду, что Mocha будет работать все, что он находит в тестовом каталоге, но и вернет зеленые тесты, если нет тестов. Так что же мы сделали, если бы не было никаких изменений?

Все, что мы сделали, это ссылка на учетную библиотеку Assert и местоположение, где файл Calculator.js будет важнично, функция калькулятора в нем. Не слишком проблематично.

Шаг 5: Наш первый тест

В том же файле, скопируйте и вставьте следующее после предыдущей пары строк.

describe("A calculator", function () {
    describe("adding 3 and 4 together", function () {
        it("should return 7", function () {
            var result = new Calculator().AddNumbers(3, 4);
            assert.equal(7, result);
        });
    });
});

По умолчанию библиотека ASSERT использует стиль подтверждения жасмина. Для калькулятора это в основном принимает форму:

assert.equal(7, result);

Шаг 6: Запустите тест!

Сохраните это, запустите его, и мы получаем:

mochanoclassdefined.png.

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

То, что вы видите

В общем, мы будем использовать Опишите Функция для документирования и группировки вместе с тестовыми жгутами и методами/сценариями, которые он тестирует через эти функции «IT (…)». Первый параметр – это просто строка, которая появляется на кратком представлении, поэтому может быть все, что нам нравится. Я предпочитаю обычный BDD, данный … когда … Тогда … «Синтаксис стиля и когда я впервые начал с моксов, это было удивительно странно, чтобы разделить это через синтаксис« он », так что описание на экране и Частичное беглое тестовое описание теста читает одинаково.

В приведенном выше фрагменте I мы эффективно устраиваем тесты по арифметическим операциям и написали тест для первого простого сценария добавления от 3 до 4.

Кроме того, мы можем разместить множество описаний и многочисленных операторов в рамках каждого блока «Опишите». Обратите внимание, что анонимная функция, прилагаемая к «она», действует, действует, а затем проверяет ожидание благодаря утверждению, и именно эта линия:

assert.equal(7, result);

Это дает тестирование их власти.

Шаг 7: Создайте класс калькулятора, чтобы пройти тест

Мы получаем исключение об оформлении зерна, потому что Mocha не может найти класс калькулятора. Это имеет смысл, потому что мы еще не создали его. На этом этапе это нормально, мы можем учиться у этого. Несмотря на динамическую природу JavaScript, в любом случае он концептуально имеет смысл, без файла, не означает никакой действительной ссылки на калькулятор. ОС!

Давайте начнем. Есть много способов написания этого. Пойдем с этим. Скопируйте следующее в новый файл и сохраните его как Calculator.js в родительском каталоге.

function Calculator() {
}
 
Calculator.prototype.AddNumbers = function (p1, p2) {
    return 0;
}

// This exports the module so we can 'see' it from the test
// and links to the require().Calculator line in the test class
module.exports.Calculator = Calculator; 

Наша структура каталогов теперь должна выглядеть что-то вроде:

c:\spikes\mocha\Calculator.js
c:\spikes\mocha\test\CalculatorTest.js

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

Теперь введите тестовый каталог и запустите Mocha. На этот раз мы получаем что-то другое.

Firstetestfail.png.

Идеально! Ну, почти. Механически это делает именно то, что нам нужно. Перед тем, как мы пройдем, единственное, что осталось, – сделать сообщение об ошибке приятным и дружелюбным, поскольку это на самом деле это не делает для меня.

AssertionError: 7 == 0  // yuk! Tells me nothing

Шаг 8: Написать дружественные сообщения об ошибках

Откройте тестовый файл и измените строку 5 к:

  assert.equal(7, result, "But the number " + result + " was returned instead");

Новый, дополнительный параметр объединяет соединительную строку фактического результата, который мы получили и строковый шаблон, поэтому мы получаем сообщение, как:

«Но вместо этого было возвращено число 0»

Тестовый файл теперь должен выглядеть так:

describe("A calculator", function () {
    describe("adding 3 and 4 together", function () {
        it("should return 7", function () {
            var result = new Calculator().AddNumbers(3, 4);
            assert.equal(7, result, "But the number " + result + " was returned instead");
        });
    });

Сохранить и введите Mocha в командной строке еще раз. На этот раз ошибка в красном состоянии гораздо более значительна.

Значительная ошибка

Сделанный! Теперь, когда он может поймать ошибки гуманно, пришло время заставить его работать!

Шаг 9: сделать его зеленым

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

Откройте класс Calculator.js и измените функцию Addnumbers, чтобы быть:

...
Calculator.prototype.AddNumbers = function (p1, p2) {
    return (p1 + p2);
}
...

И снова перейдите в каталог Мока и запустите Mocha. Смотри, что происходит на этот раз.

Firstpass.png.png.png.png

БОЛЬШОЙ! Теперь у нас сначала наша первая функция калькулятора завершена. Точка – это прогресс, который показывает, что есть один тест, а зеленый текст сейчас состояния «1 прохождение». На данный момент мы можем проверить его в нашу систему управления версиями и подключить тестовый каталог на нашего выбора CI нашего выбора, поэтому он может запустить тесты, просто работающие Mocha.

Резюме

Поздравляю! Вы тдровали свой первый класс. Рекомендации создавать тесты Mocha:

  1. Скачать узел js, если у вас его нет
  2. NPM Mocha
  3. Создайте свой тестовый класс
  4. Создайте «провал» класс и запустить мокко против него
  5. Изменить сообщение о утверждении, чтобы сделать его более значимым
  6. Внедрить функцию INTHE основного класса, чтобы сделать его работать
  7. Запустите Moch, чтобы пойти зеленым и совершать, если это делает
  8. Добрался до 4, пока вы не съели все торт

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

E @ Axelisys.

Прототип |. Производить |. Проконсультироваться