我有以下代码结构:
const finalCall = require('./final.js');
function Func(){
this.process = {
initCall: function(params, callback){
let proParams;
//processing...
return finalCall(proParams, callback);
}
}
}
现在我需要测试我的initCall
函数是否正确处理params
并调用finalCall
。我需要知道如何在我的finalCall
函数上创建一个间谍,所以当它被调用时,我可以跟踪proParams
。
我尝试过类似的东西:
const func = new Func();
let proParams = null;
spyOn(func.process.initCall, "finalCall").and.callFake(function(pParams, callback){
proParams = pParams;
});
let params = { };
func.process.initCall(params, null);
expect(func.process.initCall.finalCall).toHaveBeenCalled();
expect(proParams).toEqual('...');
我缺少可以访问finalCall的对象,或者是否有其他方法可以访问。提前谢谢。
答案 0 :(得分:0)
最后,我找到了解决问题的方法。我在构造函数finalCall()
中创建了函数Const
的原型,并在其对象上放置了spyOn
。
<强>解决方案强>
主要模块:
const finalCall = require('./final.js');
function Func(){
const self = this;
this.process = {
initCall: function(params, callback){
let proParams;
//processing...
return self.finalCall(proParams, callback);
}
}
}
Func.prototype = finalCall;
并在我的Spec文件中:
const func = new Func();
let proParams = null;
spyOn(const, finalCall);
let params = { };
func.process.initCall(params, null);
expect(func.finalCall).toHaveBeenCalled();