【问题标题】:How to run mocha tests with webpack when you don't have a single entry point to tests?当您没有单一的测试入口点时,如何使用 webpack 运行 mocha 测试?
【发布时间】:2015-12-29 22:42:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: mocha.js webpack


    【解决方案1】:

    下面的设置对我有用。它仍然使用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

    【讨论】:

      【解决方案2】:

      这并不完全是一个答案,但它为我解决了问题。我想结合 mochify 和 webpack 的原因是我想使用浏览器控制台来调试我的 mocha 测试。因为我的 mocha 测试本身不依赖于浏览器,所以我终于意识到我可以使用节点调试器,它会调出 Chrome 控制台,(几乎)解决了我的问题。 node-inspector 是节点调试器,但我正在使用 babel,所以我需要 babel-node-debug,但这不适用于 babel6,但有一个未合并的拉取请求可以修复它:https://github.com/CrabDude/babel-node-debug/pull/12

      【讨论】:

      • 使用 mocha 进行调试有更复杂的问题。 bode-debug _mocha index.js 有点为我工作。
      猜你喜欢
      • 2016-10-25
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 2019-06-17
      • 1970-01-01
      相关资源
      最近更新 更多