Jasmine条件callThrough和callFake

时间:2016-06-21 12:26:50

标签: javascript jasmine karma-jasmine

我有一个返回函数引用的方法。

function methodetobeMoked(param){
  case1:return func1;
  case 2: return func2;
 .
 .
 case n: return funcN;
}

我需要监视此方法并返回特定输入参数的假函数引用

茉莉花测试中是否有任何条件调用 我的方案是

  

SpyOn(some object,'someMethode').and.{if param=p callFake(fakeMethode) else callThrough()}

     

我试过callFake有没有办法从伪方法将控制传递给原始方法?

1 个答案:

答案 0 :(得分:6)

Jasmine间谍将原始函数保留在名为originalValue的属性中,因此您可以执行以下操作:

var mySpy = {};
mySpy = t.spyOn(obj, 'methodToBeMocked').and.callFake(function (param) {
    if (param === 'fake case') {
        // return fake result
    } else {
        // do this if using Jasmine
        return (mySpy.and.callThrough())(param);
        // do this if using Ext + Siesta and duped by common syntax :)
        // return mySpy.originalValue(param);
    }
});