Протестируйте код JavaScript с помощью браузеров Karma, Mocha, Chai и безголовых

  1. Быстрое объяснение
  2. Монтаж
  3. Заключение

Веб-приложения используют все больше и больше JavaScript. Что касается внутреннего кода, вы должны проверить его. Однако тестирование внешнего кода не так просто, как тестирование внутреннего кода. Действительно, вы должны протестировать его на нескольких браузерах (Chrome, Edge, Firefox, Safari и т. Д.) И их разных версиях. Это означает, что вам нужно протестировать свой код как минимум в 10 браузерах, чтобы убедиться, что ваш код работает должным образом.

В этой статье я покажу, как использовать Karma для запуска тестов, а Mocha и Chai - для их написания.

Быстрое объяснение

Быстрое объяснение

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

Он запускает браузеры и запускает на них тесты

кофе мокко это многофункциональный JavaScript-фреймворк, работающий на Node.js и в браузере, что делает асинхронное тестирование простым и увлекательным. Тесты Mocha запускаются последовательно, обеспечивая гибкую и точную отчетность и отображая неперехваченные исключения в правильные тестовые случаи.

description ('Array', () => {description ('# indexOf ()', () => {it ('должно возвращать -1, если значение отсутствует', () => {assert.equal ([ 1,2,3] .indexOf (4), -1);});});});

Chai библиотека утверждений BDD / TDD для узла и браузера, которая может прекрасно сочетаться с любой средой тестирования javascript.

assert.equal (foo, 'bar');

Подводя итог, Карма запускает мокко в нескольких браузерах. Утверждения тестов написаны с использованием Chai.

Монтаж

Карма поставляется с несколькими плагинами. Есть плагины для использования тестовых фреймворков и плагины для запуска браузеров. Вы можете установить Karma, плагины, мокко и чай, используя npm:

npm i - save-dev карма карма-мокко карма-чай npm i - save-dev карма-хром-лаунчер карма-firefox-launcher карма-то-лаунчер npm i - спас-дев мокко чай

Вы найдете список запуска на GitHub: Карма пусковые установки

Затем создайте функцию, тест и конфигурацию кармы. Структура вашего приложения должна выглядеть так:

MyProject ├── src │ └── main.js ├── test │ └── mainSpec.js ├── package.json └── karma.conf.js

Вот содержимое файла main.js:

function endWith (str, суффикс) {return str.indexOf (суффикс, str.length - суффикс.length)! == -1; }

Вот содержимое файла mainSpec.js:

description ('main', function () {description ('# endWith ()', function () {it ('должно возвращать true, когда значение заканчивается суффиксом'), function () {assert.equal (true, endWith ( "abcd", "cd"));}); it ('должен возвращать false, если значение не заканчивается суффиксом', function () {assert.equal (false, заканчиваетсяWith ("abcd", "cde") );});});});

Затем вы должны настроить карму. Создайте файл karma.config.js со следующим содержимым:

module.exports = function (config) {config.set ({frameworks: ['mocha', 'chai'], файлы: ['src / ** / *. js', 'test / ** / *. js' ], репортеры: ['progress'], порт: 9876, // цвета порта веб-сервера karma: true, logLevel: config.LOG_INFO, браузеры: ['ChromeHeadless', 'Firefox', 'FirefoxDeveloper', 'FirefoxNightly', ' IE '], autoWatch: false, параллелизм: Infinity, customLaunchers: {FirefoxHeadless: {base:' Firefox ', флаги: [' -headless '],},},})}

По умолчанию karma-firefox не регистрирует безголовую версию браузера, поэтому я добавляю ее вручную в раздел customLaunchers.

Наконец, добавьте тестовый скрипт в packages.json:

{"name": "my-project", "version": "0.0.0", "devDependencies": {// код опущен для краткости}, "scripts": {"test": "start karma --single- запустите --browsers ChromeHeadless, FirefoxHeadless, IE karma.conf.js "}}

Теперь вы можете запустить тесты, используя npm test

тест npm

тест npm

Заключение

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

Похожие

Управление удаленным рабочим столом с помощью общего экрана
Остановить совместное использование экрана. При просмотре удаленного компьютера запустите или остановите управление удаленной клавиатурой и мышью.
Использование мобильного устройства для управления игрой в браузере с помощью веб-разработки
Поддержка акселерометра доступна в Mobile Safari и на всех новых устройствах Android. Это позволяет браузеру ощущать движение, скорость и направление с помощью Javascript на мобильных и планшетных устройствах. Если мы немедленно передадим данные о перемещении с мобильного устройства через сервер nodejs в браузер, тогда мы сможем управлять игрой в браузере. Это именно то, что мы собрали в этом веселая маленькая демонстрация html5 ,
Что такое эквивалент Ctrl + Alt + Delete на Mac?
Если вы переключитесь на Mac после знакомства с Windows, вы быстро обнаружите, что стандартные сочетания клавиш Ctrl + Alt + Delete ничего не делают. Mac OS X имеет свою собственную версию
Рендеринг HTML5 в старых браузерах с помощью Google Chrome Frame
Обновление, июнь 2013 года: Google завершает работу над Chrome Frame и планирует прекратить поддержку и обновления в январе 2014 года. Ознакомьтесь с Сообщение в блоге Chromium для дополнительной информации. Для получения рекомендаций о том,
КАК: Войдите в режим быстрой загрузки на Moto X Style (2015)
... и в режим быстрой загрузки на Moto X Style (2015), выполните действия, приведенные в полном руководстве ниже. Если вы пытаетесь разблокировать загрузчик или обновляете свой телефон, оба требуют доступа к режиму быстрой загрузки. Этот режим встроен в телефон, что означает, что вам не понадобятся какие-либо установки, прежде чем вы сможете получить доступ к Fastboot. Перейдя в режим Fastboot, вы можете процесс разблокировки
Обновление политики Google Map: это After Effects и альтернативы
2 мая 2018 г. Google объявил что они собираются сделать самое большое обновление за 13 лет истории Google Map. В этом обновлении они собираются объединить все 18 стандартных API в три стандартных продукта - Карты, Маршруты и Места. Вы получите отдельный API, с помощью которого вы сможете получить доступ ко всем этим трем функциям, и вам не нужно менять какие-либо коды, чтобы это работало.