如果没有单一的测试入口点,如何使用webpack运行mocha测试?

时间:2015-10-01 19:05:49

标签: mocha webpack

我正在尝试将项目从browserify + mochify转换为webpack

webpack docs演示了如何使用mocha-loader运行webpack-dev-server的测试,但假设测试中有一个入口点。

所有现有测试的设计都考虑了mochify,它不需要单个入口点,因为它以递归方式捆绑./test/*.js

2 个答案:

答案 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} }。