7

我试图让 Mocha 观看我的项目进行测试并不断运行测试,但是当我使用该-w标志时出现错误。

这里测试执行得很好:

C:\Foo>mocha

  .

  ? 1 tests complete (3ms)

在这里-w

C:\Foo>mocha -w


node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: No such module
    at EventEmitter.<anonymous> (node.js:392:27)
    at Object.<anonymous> (C:\Users\Greg\AppData\Roaming\npm\node_modules\mocha\bin\_mocha:203:11)
    at Module._compile (module.js:441:26)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:31)
    at Function._load (module.js:308:12)
    at Array.0 (module.js:479:10)
    at EventEmitter._tickCallback (node.js:192:40)

我已经全局安装了 Mocha ( npm install -g mocha) 并且应该在本地安装到项目中。

我在 64 位 Windows 7 家庭高级版上使用节点 v0.6015、Mocha 1.0.1 和应该 0.6.1。

4

2 回答 2

5

通过更改几个 mocha 源代码文件,我能够使其在 Windows 上运行。在 npm install mocha 之后(在我的情况下,我只是为我的项目安装它,而不是全局安装):

1)首先去node_modules\mocha\lib\utils.js找到并修复watch函数如下:

exports.watch = function(files, fn) {
    var options = { interval: 100 };
    files.forEach(function(file) {
        debug('file %s', file);
        fs.watch(file, options, function(curr, prev) {
            fn(file);
        });
    });
};

我用 fs.watch 替换了 fs.watchFile(有关详细信息,请参阅https://github.com/fgnass/node-dev/issues/26),因为第一个似乎不适用于 Windows。

2) 现在打开node_modules\mocha\bin\_mocha并应用以下修复:

a) 查找并注释掉或删除以下代码:

process.on('SIGINT', function(){
  showCursor();
  console.log('\n');
  process.exit();
});

由于上面没有等效的 POSIX 信号行(理想情况下由正确的实现替换,请参阅Node.js 中 process.on('SIGINT') 的 Windows 等效项是什么?了解更多详细信息)

b) 找到以下代码utils.watch(watchFiles, function(){...并将其替换为

  var lastRun = new Date();
  utils.watch(watchFiles, function(){
    if (new Date() - lastRun > 300)
    {
        purge();
        stop()
        mocha.suite = mocha.suite.clone();
        ui = interfaces[program.ui](mocha.suite);
        loadAndRun();
        lastRun = new Date();
    }
  });

它可以抑制来自 fs.watch 的过多调用。

c) 最后的更改是删除或注释掉这一行:

  process.stdout.write('\r' + str);

函数 play(arr, interval)中。它只是消除噪音。

于 2012-07-07T10:33:00.263 回答
1

尝试将 mocha 本地安装到您正在测试的项目中,看起来 mocha 没有找到需要使用的模块。

另外我认为这对你也应该有帮助: Mocha 需要 make。找不到适用于 Windows 的 make.exe

于 2012-06-16T17:51:21.357 回答