`module.exports = function`可测试性

时间:2015-01-21 14:28:02

标签: javascript node.js unit-testing design-patterns

假设我想创建一个链接多个转换函数的管道,并将每个转换函数放在自己的文件中。

虽然我更喜欢每个人都导出函数,但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

0 个答案:

没有答案