访问nodejs中的嵌套导出

时间:2013-12-26 20:54:03

标签: javascript node.js

我有一个我试图测试的模块。它的布局如下:

exports.doThings = function(args, callback) {
    async.series([
        function doThisFirst(next) {....},
        function doThisSecond(next) {....}
    ], .....
}

我非常想单独测试函数doThisFirst和doThisSecond,所以我试着像这样导出它们:

exports.doThings = function(args, callback) {
    async.series([
        exports.doThisFirst = function(next) {....},
        exports.doThisSecond = function(next) {....}
    ], .....
}

但是,我在运行测试时遇到了这个错误:TypeError:Object#没有方法'doThisFirst'

如果我将代码更改为:

exports.doThings = function(args, callback) {
    async.series([
        exports.doThisFirst,
        exports.doThisSecond
    ], .....
}
exports.doThisFirst = function(next) {....}

但我认为这对代码可读性不利。有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

为了提高可读性,您可以先考虑定义内部方法:

module.exports = exports = {
  doThisFirst: function(args, callback){...},
  doThisSecond : function(args, callback) {...},
  doThings : function(args, callback) {
    async.series([
        exports.doThisFirst,
        exports.doThisSecond
    ], function(err){});
}

显然,此方法的问题是您最终会在外部公开doThisFirstdoThisSecond