【发布时间】:2015-12-29 22:42:18
【问题描述】:
我正在尝试将项目从 browserify+mochify 转换为 webpack。
webpack docs 演示了如何使用mocha-loader 来运行带有webpack-dev-server 的测试,但假设测试只有一个入口点。
所有现有测试的设计都考虑到了mochify,它不需要单个入口点,因为它递归地捆绑./test/*.js。
【问题讨论】:
我正在尝试将项目从 browserify+mochify 转换为 webpack。
webpack docs 演示了如何使用mocha-loader 来运行带有webpack-dev-server 的测试,但假设测试只有一个入口点。
所有现有测试的设计都考虑到了mochify,它不需要单个入口点,因为它递归地捆绑./test/*.js。
【问题讨论】:
下面的设置对我有用。它仍然使用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
【讨论】:
这并不完全是一个答案,但它为我解决了问题。我想结合 mochify 和 webpack 的原因是我想使用浏览器控制台来调试我的 mocha 测试。因为我的 mocha 测试本身不依赖于浏览器,所以我终于意识到我可以使用节点调试器,它会调出 Chrome 控制台,(几乎)解决了我的问题。 node-inspector 是节点调试器,但我正在使用 babel,所以我需要 babel-node-debug,但这不适用于 babel6,但有一个未合并的拉取请求可以修复它:https://github.com/CrabDude/babel-node-debug/pull/12。
【讨论】:
bode-debug _mocha index.js 有点为我工作。