我目前正在写一个应用程序的NodeJS一些测试。 假设我有一个这样的模块:
module.exports = function myModule(moduleParam) {
var someVar;
....
....
function helper(param) {
return param + someVar;
}
return {
doSomething: function (bar) {
....
....
var foo = helper(bar);
....
....
}
};
};
假设“帮手”的功能只在模块内是有用的,不应该被暴露于外。
什么是检验它的“最佳实践”? (当然,我可以测试DoSomething的功能为一体,但这样一来,在“助手”功能,在特定情况下进行测试,在一个“黑盒子”的方式)。
我使用nodeunit作为测试框架,对于梅特,但我可以改变它的需要。
你不对它进行测试。 单元测试是黑盒测试。 这意味着,你测试的唯一的事情就是又名合同的公共接口。
私人的功能,例如,这些只能从重构公立发生。
所以,如果你因此使用TDD您的私有函数隐测试。
如果这种感觉错了,它是最常见的原因你的结构是错误的。 那么你应该考虑移动您的私人东西到一个额外的模块。
因为我觉得测试超出单元测试和TDD的有用工具( 此SO答案也是一个不错的说法),我做了一个NPM包在你们这样的情况下,以帮助: 需要-从 。
在您例如,这是你将如何使用它:
模块file.js:
function helper(param) {
return param + someVar;
}
module.exports = function myModule(moduleParam) {
var someVar;
....
....
return {
doSomething: function (bar) {
....
....
var foo = helper(bar);
....
....
}
};
};
module.helperExports = helper;
进口-file.js:
var requireFrom = require('require-from');
var helper = requireFrom('helperExports', './module-file'));
var public = requireFrom('exports', './module-file')); // same as require('./module-file')