5

我有一个现有的测试套件,它使用 mocha、require 和 jasmine 在 node.js 中运行良好,测试通过 psake powershell 脚本运行。我正在尝试添加测试覆盖率,因此要运行单元测试而不是:

节点 unitTest.js

我在做

伊斯坦布尔封面 unitTest.js

这似乎有效,但只给了我关于 unitTest.js 本身的覆盖信息,而不是项目中使用的任何其他实际 javascript 文件。我猜这是因为 require/mocha 组合,所以它不知道我正在使用的 js 文件。

我尝试在代码覆盖之前手动检测所有文件,并在复制/检测的文件上运行相同的命令,但得到了相同的结果。有关使这项工作的任何提示?

这是 unitTest.js 的最后一部分

    requirejs(['mocha'], function(Mocha) {
var mocha = new Mocha({reporter: (process.env['TEAMCITY_VERSION'] ? 'teamcity' : 'spec')});
// Hack to establish the global variables (sigh)
mocha.suite.emit('pre-require', global, __filename, mocha);

fswalk(__dirname, function(err, results) {
    if (err)
        console.warn(err);
    else {
        var testName = process.argv[2] || "";
        console.log("testName: " + testName);
        var inclusionSuffixes = [testName + '.test.js'];
        var exclusionSuffixes = ['.integration.test.js'];
        var tests = _.filter(results, function (result) {
            var test = function (suffix) { return result.indexOf(suffix) == result.length - suffix.length; };
            return _.any(inclusionSuffixes, test) && !_.any(exclusionSuffixes, test);
        });
        requirejs(tests, function () {
            mocha.run(function(failures) {
                process.exit(failures);
            });
        });
    }
});

});

4

2 回答 2

0

@user2576666 在评论中回答了这个问题:

“使用参数 --hook-run-in-context 使其正常工作”

于 2017-08-09T20:56:10.887 回答
-1

尝试诱使这些不同的部分自己一起工作的另一种方法是使用Intern

这对于使用 AMD (require.js) 的项目尤其有意义。它在后台使用了伊斯坦布尔,并有一个代理服务器可以自动检测您的代码。对于您正在尝试做的事情,这是一个非常巧妙的设置。

于 2016-12-27T20:58:55.863 回答