Jasmine 条件 callThrough 和 callFake

Jasmine conditional callThrough and callFake

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

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

我需要监视此方法和 return 特定输入参数 p

的伪函数引用

jasmine测试中有没有条件callThrough 我的场景是

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

I tried callFake Is there any way to pass control to original method from fake method?

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);
    }
});