我正在尝试将项目从browserify
+ mochify
转换为webpack
。
webpack docs演示了如何使用mocha-loader
运行webpack-dev-server
的测试,但假设测试中有一个入口点。
所有现有测试的设计都考虑了mochify
,它不需要单个入口点,因为它以递归方式捆绑./test/*.js
。
答案 0 :(得分:2)
下面的设置对我来说很有用。它仍然使用mochify
来运行测试(因为它具有所有phantomjs接口),但不依赖browserify
中的任何内容。如果您运行webpack --watch
,它会在文件更改时重新运行所有测试。
webpack.config.js
:
var path = require("path");
var child_process = require('child_process');
module.exports = {
entry: {
tests: "./tests.js"
},
output: {
filename: "tests.js", // Should be a unique name
path: "/tmp"
},
plugins: [
// Automatically run all tests when webpack is done
function () {
this.plugin("done", function (stats) {
child_process.execSync('mochify /tmp/tests.js', { stdio: 'inherit'});
});
}
],
};
tests.js
:
// List all test dirs here if you have multiple
var contexts = [
require.context('./dir1/test', true, /\.js$/),
require.context('./dir2/test', true, /\.js$/)
];
contexts.forEach(function (context) {
context.keys().forEach(context);
});
此处描述了另一种方法:https://stackoverflow.com/a/32386750/675011
答案 1 :(得分:0)
这不是答案,但它解决了我的问题。我想将mochify和webpack结合起来的原因是我想使用浏览器控制台来调试我的mocha测试。由于我的mocha测试本身并不依赖于浏览器,因此我终于意识到我可以使用节点调试器并且它会启动Chrome控制台(几乎)解决我的问题。 node-inspector是节点调试器,但我正在使用babel,所以我需要babel-node-debug,但这还不适用于babel6,但是有一个未合并的pull请求可以修复它:{{3} }。