Karma — это тестовый раннер для JavaScript, который позволяет
запускать тесты в реальных браузерах и интегрироваться с различными
фреймворками тестирования. Основой работы Karma является
конфигурационный файл karma.conf.js, в котором указываются
используемые адаптеры фреймворков. Адаптер отвечает за
связь Karma с конкретной библиотекой тестирования, например, Jasmine,
Mocha или QUnit.
Перед установкой важно определить, какой фреймворк будет использоваться:
Для каждого фреймворка существует отдельный адаптер, который устанавливается через npm и подключается в конфигурации Karma.
Адаптеры устанавливаются как обычные npm-пакеты. Для Jasmine это выглядит так:
npm install --save-dev karma-jasmine jasmine-core
Для Mocha и Chai установка потребует нескольких пакетов:
npm install --save-dev karma-mocha karma-chai mocha chai
Для QUnit достаточно:
npm install --save-dev karma-qunit qunit
Важной особенностью является то, что пакет
karma-<framework> всегда необходим, так как
именно он реализует интерфейс взаимодействия Karma с выбранным
фреймворком.
После установки адаптер подключается в массив frameworks
внутри karma.conf.js:
module.exports = function(config) {
config.set({
frameworks: ['jasmine'],
files: [
'src/**/*.js',
'test/**/*.spec.js'
],
reporters: ['progress'],
browsers: ['ChromeHeadless'],
singleRun: true
});
};
Ключевые моменты:
frameworks может содержать несколько фреймворков
одновременно, если требуется комбинированное тестирование.Адаптеры выполняют три основные функции:
Некоторые фреймворки, например Mocha, позволяют настраивать
UI (bdd, tdd,
exports) прямо через адаптер. В конфигурации Karma это
делается следующим образом:
frameworks: ['mocha', 'chai'],
mochaReporter: {
output: 'autowatch'
}
Адаптеры часто используют дополнительные плагины Karma. Например:
karma-chrome-launcher или
karma-firefox-launcher — для запуска тестов в выбранных
браузерах.karma-coverage — для генерации отчётов о покрытии
кода.karma-webpack — для сборки модулей перед
тестированием.Каждый адаптер должен быть перечислен в массиве plugins,
если автоматическое подключение не используется. Пример:
plugins: [
'karma-jasmine',
'karma-chrome-launcher',
'karma-coverage'
]
frameworks.jasmine-core, mocha,
qunit) в проекте.--save-dev для воспроизводимости.Адаптеры фреймворков являются критическим звеном в инфраструктуре тестирования на Karma. Их корректная установка и настройка обеспечивает стабильное выполнение тестов в разных браузерах и интеграцию с системами отчётности и покрытия кода.