我有一个我试图测试的模块。它的布局如下:
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) {....}
但我认为这对代码可读性不利。有什么方法可以解决这个问题吗?
答案 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){});
}
显然,此方法的问题是您最终会在外部公开doThisFirst
和doThisSecond
。