【问题标题】:accessing nested exports in nodejs访问nodejs中的嵌套导出
【发布时间】:2014-01-14 11:31:14
【问题描述】:

我有一个要测试的模块。它的布局是这样的:

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 # has no method 'doThisFirst'

如果我把代码改成这样就可以了:

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

但我认为这对代码的可读性不利。有没有办法解决这个问题?

【问题讨论】:

标签: javascript node.js


【解决方案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

【讨论】:

  • 是的,但我不知道有任何其他好方法可以公开这些功能以进行测试。而且它只是一个内部工具,所以它们是否暴露在外部对我来说并不重要。
猜你喜欢
  • 1970-01-01
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多