Javascript依赖注入:如何模拟私有变量/函数的依赖关系?
为下面的javascript/NodeJ提供依赖项注入的惯用方法是什么?我希望能够用自己的mock替换util、cfg和call_hard,以便于单元测试:Javascript依赖注入:如何模拟私有变量/函数的依赖关系?,javascript,node.js,unit-testing,mocking,jasmine,Javascript,Node.js,Unit Testing,Mocking,Jasmine,为下面的javascript/NodeJ提供依赖项注入的惯用方法是什么?我希望能够用自己的mock替换util、cfg和call_hard,以便于单元测试: /* file: platform.js */ var config = require('./config'), ConfigParser = require('./ConfigParser'), fs = require('fs'), util = require('./util'); function ad
/* 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-为这段代码编写单元测试的最佳方法是什么?我希望能够用我的mock替换util、cfg和call_hard
我已将以下代码添加到我的platform.js文件中。它允许我提供我的模拟(我觉得不习惯):
2-或者我应该只编写集成测试而不去麻烦
3-关于如何用JavaScript编写更好的代码/单元测试,还有其他建议吗
4-我应该使用其他库、工具或透视图吗?欢迎任何建议。你试过茉莉花间谍吗?你可以使用spyon(obj.method).andReturn(dummy)Hi@sruti,在这种情况下,没有jasmine间谍会帮不上忙,因为我们正在处理私有变量/对象/函数。
/* 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 */