【发布时间】:2017-07-01 16:14:01
【问题描述】:
我正在尝试使用 webpack 将测试捆绑到一个可以直接传递给 mocha 的包中。我的 webpack 配置如下所示:
module.exports = {
entry: ...,
output: ...,
module: {
rules: [
{
test: /\.jsx?(.erb)?$/,
exclude: /node_modules/,
loader: 'babel-loader',
options: {
presets: [
'react',
[ 'latest', { 'es2015': { 'modules': false } } ]
]
}
}
]
},
plugins: [],
resolve: {
extensions: [ '.js', '.jsx' ],
modules: [
path.resolve('../app/javascript'),
path.resolve('../vendor/node_modules')
]
},
resolveLoader: {
modules: [ path.resolve('../vendor/node_modules') ]
}
}
(来自https://github.com/rails/webpacker)
我的入口点看起来像这样,我在其他地方看到过引用:
var context = require.context('../path/to/tests', true, /.+\.test\.js?$/);
context.keys().forEach(context);
module.exports = context;
现在这可以工作了,并生成了一个包,比如 tests.js,我可以将它传递给 mocha:
$ mocha tests.js
但是,这使得 webpack 每次更改时都会重新编译所有测试文件,这真的很慢。对于我使用常规导入语句导入模块的应用程序代码,webpack 仅重新编译已更改的文件。
将我的入口点更改为:
require('../path/to/tests/foo.test.js');
require('../path/to/tests/bar.test.js');
require('../path/to/tests/baz.test.js');
...
似乎达到了想要的效果,但是测试文件有数百个,要手动导入或者要求每个都显得很麻烦。
【问题讨论】:
标签: ruby-on-rails testing webpack mocha.js