这是一个普通的节点模块。有些功能并非全部导出,但需要测试
var foo1 = function () { console.log("Foo1"); }
var foo2 = function () { console.log("Foo2"); }
var foo3 = function () { console.log("Foo3"); }
module.exports = {
foo1: foo1,
foo2: foo2
}
有谁知道如何测试foo3?通常我用node-sandboxed-module测试模块。但是只能模拟模块的给定事物,但我不能改变方法的范围。
使用node-sandboxed-module测试模块的示例:
var SandboxedModule = require('sandboxed-module');
var user = SandboxedModule.require('./user', {
requires: {'mysql': {fake: 'mysql module'}},
globals: {myGlobal: 'variable'},
locals: {myLocal: 'other variable'},
});
感谢您的帮助!
答案 0 :(得分:0)
我用过这个,似乎有效。
<强> sample.js
function double(p2) {
return p2*2
}
module.exports = function(p, p2) {
return "Hi "+p+", double "+p2+" = "+double(p2)
}
<强> sample_test.js
function load(file_name) {
global.module = {}
const contents = require('fs').readFileSync(file_name, 'utf8');
const vm = require('vm')
new vm.Script(contents).runInThisContext();
}
load("./sample.js")
console.log(global.module.exports("Jim","10"))
console.log(double(2))
<强>输出
Hi Jim, double 10 = 20
4