Я бы посоветовал вам использовать Karmajs
Karmajs - это тестовый прогон, поэтому вы можете настроить его на использование mocha для запуска тестов, а также вы можете предварительно обработать ваши тесты с помощью веб-пакетапоэтому вся предварительная обработка (для NormalModuleReplacementPlugin
и любой другой), которая была выполнена с помощью конфигурации веб-пакета, доступна при выполнении тестов с помощью Karma.
По сути, установите Karma и связанные с ней пакеты в приложении
yarn add karma karma-chai-plugins karma-chrome-launcher karma-cli karma-coverage karma-mocha karma-mocha-reporter karma-sinon-chai karma-sourcemap-loader karma-webpack
Создать karma.conf.js
const webpackConfig = require('./webpack.config');
const webpack = require('webpack');
webpackConfig.devtool = 'inline-source-map';
webpackConfig.plugins = [
new webpack.ProvidePlugin({
'es6-promise': 'es6-promise',
}),
];
module.exports = function (config) {
config.set({
browsers: [ 'Chrome' ],
// karma only needs to know about the test bundle
files: [
'../node_modules/babel-polyfill/dist/polyfill.js',
'karma.globals.js',
'tests.bundle.js',
],
frameworks: [ 'chai', 'mocha' ],
// run the bundle through the webpack and sourcemap plugins
preprocessors: {
'tests.bundle.js': [ 'webpack', 'sourcemap' ],
},
// reporters: [ 'mocha', 'coverage' ],
reporters: [ 'mocha' ],
// coverageReporter: {
// type: 'text-summary',
// includeAllSources: true
// },
singleRun: false,
autoWatch: true,
// webpack config object
webpack: webpackConfig,
webpackMiddleware: {
noInfo: true,
},
});
};
Создать tests.bundle.js
для запуска тестов для всех ваших тестовых файлов, в этом примере все наши тестовые файлы имеютрасширение файла .spec.js
и находится в каталоге ./src
.
tests.bundle.js
const context = require.context('./src', true, /\.spec\.js$/);
context.keys().forEach(context);
export default context;
Для настройки глобальных переменных, которые должны быть доступны черезвсе ваше приложение / тесты могут быть настроены с помощью файла karma.globals.js
.
karma.globals.js
const __DEV__ = false;
const INITIAL_STATE = {
name: 'My App',
version: 'v2.5.6'
};
После настройки вышеуказанного вы можете запустить все свои тестыиз каталога, в котором вы создали karma.config.js и package.jsпутем выполнения следующей команды.
yarn karma start
Примечание. Тесты также можно настроить на выполнение в браузерах без головы (например, phantomjs), в этом примере мы используем Chrome Browser для запуска наших тестов.