Javascript依赖注入:如何模拟私有变量/函数的依赖关系?

时间:2014-12-10 03:32:48

标签: javascript node.js unit-testing mocking jasmine

为下面的javascript / nodejs提供依赖注入的惯用方法是什么?我希望能够用我自己的模拟替换util,cfg和call_hard,以便于单元测试:

/* file: platform.js */
var config = require('./config'),
    ConfigParser = require('./ConfigParser'),
    fs = require('fs'),
    util = require('./util');


function add(dir){
   var xml = util.getConfigFile(dir);
   var cfg = new ConfigParser(xml);
   return call_hard(xml, cfg);
}

function call_hard(xml, cfg){
   ...
}

module.exports.add = add;

/* end of file: platform.js */

1-为此代码编写单元测试的最佳方法是什么?我希望能够用我的模拟替换util,cfg和call_hard。

我已将以下代码添加到我的platform.js文件中。它允许我提供我的嘲笑(它对我来说不是惯用的):

/* file: platform.js */
...
module.exports.set_util = function(new_util) {
   util = new_util;
};
module.exports.set_cfg= function(new_cfg) {
   cfg = new_cfg;
};
module.exports.set_call_hard= function(new_call_hard) {
   call_hard= new_call_hard;
};

/* end of file: platform.js */

2-或者我应该编写集成测试而不打扰?

3-有关如何在JavaScript中编写更好的代码/单元测试的任何其他建议吗?

4-我应该使用任何其他库或工具或透视图吗?欢迎提出任何建议。

0 个答案:

没有答案