我已经使用 nodeunit 编写了一堆测试来测试我的代码。在这样做时,我想模拟被测代码所需的模块。当不需要时,我没有更改代码以使其更易于使用模拟、控制反转进行测试,而是使用 nodeunits 沙箱功能。
例子
var nodeunit = require("nodeunit");
export.MyTest = {
test1(test) {
var fakeGlobals = {
require: function(filename) {
if (filename == "CoolUtil.js") {
return { doit: function wasCool() { return true; } };
} else {
return require(filename);
}
}
};
var testSubject = nodeunit.utils.sandbox("ModuleUnderTest.js", fakeGlobals);
test.equals(42, testSubject.doSomethingCoolUsingCoolUtil(), "Worked");
test.done();
}
}
伊斯坦布尔给了我错误的报道报告编号。我尝试使用标志--post-require-hook,据说它与RequireJS一起使用,我可以切换到但还没有学会。
test/node_modules/.bin/istanbul 覆盖 --v --hook-run-in-context --root test/node_modules/.bin/nodeunit -- --reporter junit --output target/results/unit_tests test
有没有人成功使用 nodeunit、istanbul 和使用 nodeunit 中的沙盒功能?