我同意 David Weldon 的帖子,但我将添加一些示例。
您应该像往常一样编写 Node 模块。如果我正在编写一个可能在代码的其他部分中使用的计算器,我的计算器模块可能看起来像这样:
Calculator = {
add: function(a, b) {
return a + b;
}
};
module.exports = Calculator;
您提到使用module.exports
似乎昂贵且突兀。对此,您可以做几件事。module.exports
是让您的代码在另一个文件中可访问的最佳和推荐方式。为了简单起见,您可以将函数和变量包装在一个对象中,就像我对计算器所做的那样,并且只导出一个对象。
请注意,有两种使用“导出”的方法。你可以这样做:
var a = function() { ... };
var b = 10;
var c = null;
exports.a = a;
exports.b = b;
exports.c = c;
它将东西添加到exports
模块的特殊对象中。或者你可以这样做:
objectToExport = {
a: function() { ... },
b: 10,
c: null
};
module.exports = objectToExport;
这将替换对象exports
。如果你这样做exports = objectToExport
了,它将不起作用,当你尝试require
在另一个文件中使用模块时,你最终会得到一个空对象。
当我使用 Mocha 进行测试时,我将所有测试文件放在一个test
目录中,该目录反映了我的代码目录的结构。
project
+- lib
+- calculator.js
+- test
+- lib
+- calculator.js
我的 test/lib/calculator.js 文件是我对 lib/calculator.js 文件的 Mocha 测试
var Calculator = require('../../lib/calculator.js');
var assert = require('assert');
describe('Calculator', function() {
describe('add', function() {
it('should add two numbers', function() {
var res = Calculator.add(2,2);
assert.equal(res, 4);
});
});
});
默认情况下,mocha 会/test
在你运行 mocha 的目录中查找目录。如果您有上面示例中的子目录,您可以添加--recursive
到命令行以查找所有测试。因此,如果您在project
上面的目录中运行,您的命令将是mocha --recursive
.