Итак, я сам нашел решение.
- Babel & mocha - лучшее, без промежуточных файлов
Сначала .mochar c. js файл для настройки mocha для использования babel и chai:
module.exports = {
require: ['chai', '@babel/register'],
ui: 'bdd',
// ui: 'tdd',
reporter: 'spec',
growl: false,
};
Я выбрал ui: 'bdd' , потому что я использовал описание в тесте. js: describe('Market class:', function() {
Во-вторых, я добавил babel конфигурацию в упаковке. json:
"babel": {
"env": {
"test-console": {
"presets": ["@babel/preset-env"],
"plugins": ["@babel/plugin-proposal-class-properties"]
}
,
"test": {
"presets": ["@babel/preset-env"],
"plugins": ["@babel/plugin-proposal-class-properties", "transform-remove-console"]
}
}
},
Две среды для использования с выходом консоли и без него.
Это приводит к пакету . json секция сценариев для выполнения одной из них:
"scripts": {
"test": "BABEL_ENV=test mocha || TRUE",
"test-console-log": "BABEL_ENV=test-console mocha || TRUE"
},
и теперь я был готов к выполнению теста . js. Выполнен импорт в мои модули.
Вот глава теста. js:
var assert = require('chai').assert
import Market from '../public/mm/ai/Market.js'
...
Я перешел на импорт, когда дело касалось моих собственных модулей.
Webpack, babel & mocha Все в конфигурации webpack:
var path = require('path');
const TerserPlugin = require('terser-webpack-plugin')
module.exports = {
mode: 'none',
entry: './test/test.js',
output: {
path: path.resolve(__dirname, 'test/'),
filename: 'exec_test.js'
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
plugins: ['@babel/plugin-proposal-class-properties']
}
}
}
]
},
optimization: {
minimize: true,
minimizer: [new TerserPlugin({
terserOptions: {
compress:
{
drop_console: true
}
}
})]
}
};
, а затем вы можете собрать и запустить его:
"scripts": {
"build-tests-webpack": "webpack --config webpack.config.test.js",
"exec test": "mocha --ui bdd test/exec_test.js"
}
в упаковке. json