假设我想创建一个链接多个转换函数的管道,并将每个转换函数放在自己的文件中。
虽然我更喜欢每个人都导出函数,但module.exports = function transform
似乎是个坏主意,因为我们只能测试它们像blackbox一样?鉴于我们可以公开实例属性,module.exports = constructor Transform
看起来更可测试。
所以我通常最终会编写一个像
这样的包装器var SomeClass = require('./lib/some-class');
module.exports = factory;
function factory(options) {
var instance = new SomeClass(options);
//... more work
return instance;
}
然后单独测试SomeClass
。
虽然这有效,但这是一个好模式吗?我希望我的主pipeline.js
只能调用函数,而不必知道如何new
并运行每个函数类,因为管道应该只知道它们是简单的转换函数,即。 f(X) -> Y
。