Ответ 1
Загрузчик Mocha не будет запускать тесты при построении, он используется для создания пакета, содержащего ваши тесты, которые затем можно запустить из вашего браузера.
Я бы рекомендовал создать отдельный файл конфигурации webpack для ваших тестов, который затем можно разместить на веб-сервере-dev-сервере, который использует другой порт из вашего приложения. Вот пример того, что более или менее шаблон, который я использую для своих собственных проектов (на момент написания этого ответа):
webpack.tests.config.js
module.exports = {
entry: 'mocha!./tests/index.js',
output: {
filename: 'test.build.js',
path: 'tests/',
publicPath: 'http://' + hostname + ':' + port + '/tests'
},
module: {
loaders: [
{
test: /\.js$/,
loaders: ['babel-loader']
},
{
test: /(\.css|\.less)$/,
loader: 'null-loader',
exclude: [
/build/
]
},
{
test: /(\.jpg|\.jpeg|\.png|\.gif)$/,
loader: 'null-loader'
}
]
},
devServer: {
host: hostname,
port: port
}
};
тесты /index.js
// This will search for files ending in .test.js and require them
// so that they are added to the webpack bundle
var context = require.context('.', true, /.+\.test\.js?$/);
context.keys().forEach(context);
module.exports = context;
package.json
"scripts": {
"test": "find ./ -name '*.test.js' | xargs mocha -R min -r babel/register",
"devtest": "webpack-dev-server --config webpack.tests.config.js",
"dev": "webpack-dev-server --config webpack.config.js"
}
test.html
<!DOCTYPE html>
<html>
<head>
<title>Mocha</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./node_modules/mocha/mocha.css" />
<script src="/tests/test.build.js"></script>
</head>
<body>
</body>
</html>
Затем запустите npm run devtest
, откройте http://localhost:<port you picked>/webpack-dev-server/test.html
, а mocha должен выполнить ваши тесты.
Если вам не нужны CSS/LESS или изображения через ваши модули, вы можете удалить эти загрузчики с webpack.tests.config.js
.
Если включена горячая загрузка, это действительно отличная настройка, потому что у меня есть как приложение, так и мои тесты, запущенные на разных вкладках браузера, затем обновляйте мой код и просматривайте мои изменения, а мои тесты снова запускаются.
Вы также можете запустить npm run test
для выполнения тех же тестов с помощью командной строки.
Надеюсь, что это поможет.