为什么运行Mocha与Node.js第一次工作,但不是第二次?

时间:2014-01-27 16:49:06

标签: javascript node.js testing mocha

我有一个测试应用程序,它有一个UI,允许用户选择某些测试并通过单击带有Mocha的按钮来运行这些测试。由于某种原因,第一次,测试运行,我得到传递结果(2传递或其他)。即使选择了所有相同的值,任何后续点击按钮都会运行Mocha,但它会运行0次测试。所以,它返回0传递。这是在进行AJAX POST时运行的代码:

var Mocha = require('mocha'),
    fs = require('fs'),
    path = require('path');

var mocha = new Mocha({
    reporter: 'list'
});

fs.readdirSync('node_modules/selenium-webdriver/nb_tests/').filter(function (file) {
  return file.substr(-3) === '.js';
}).forEach(function (file) {
  mocha.loadFile(path.join('node_modules/selenium-webdriver/nb_tests/', file));
});

// Now, you can run the tests.
mocha.run(function (failures) {
    process.on('exit', function () {
      process.exit(failures);
    });
});

顺便说一句,当我在运行测试之前调试.log(mocha)时,它们在所有请求中都是相同的。可能导致问题的任何想法?

1 个答案:

答案 0 :(得分:1)

想出来......似乎Mocha不喜欢我为每个POST创建一个新实例。上面的代码都包含在路由处理程序中。所以,这就是我所做的:

var Mocha = require('mocha');
var path = require('path');
var fs = require('fs');

var mocha = new Mocha({
    reporter: 'list'
});

app.post('/runtest', function (req, res) {
    fs.readdirSync('node_modules/selenium-webdriver/nb_tests/').filter(function (file) {
        return file.substr(-3) === '.js';
    }).forEach(function (file) {
        mocha.addFile(path.join('node_modules/selenium-webdriver/nb_tests/', file));
    });

    mocha.run();
});
相关问题