Javascript 未调用方法上的Sinon.spy

Javascript 未调用方法上的Sinon.spy,javascript,unit-testing,mocking,sinon,Javascript,Unit Testing,Mocking,Sinon,我正在测试的代码相当简单:如果条件得到验证,它将调用一个方法。如果不是,它将调用第一个方法中包含的另一个方法作为属性 app.js: 功能测试(fn,已激活){ 如果(已激活){ 返回fn('foo') } 返回fn.subFn('bar')) } var fn=函数(p){return p} fn.subFn=函数(p){return'sub-'+p} var resFn=测试(fn,真) var resSubFn=测试(fn,false) document.write(resFn)//按预

我正在测试的代码相当简单:如果条件得到验证,它将调用一个方法。如果不是,它将调用第一个方法中包含的另一个方法作为属性

app.js:

功能测试(fn,已激活){
如果(已激活){
返回fn('foo')
}
返回fn.subFn('bar'))
}
var fn=函数(p){return p}
fn.subFn=函数(p){return'sub-'+p}
var resFn=测试(fn,真)
var resSubFn=测试(fn,false)
document.write(resFn)//按预期显示'foo'

document.write(resSubFn)//按预期显示“bar”
我没有找到确切的解决方案,但解决方案非常接近。因此,问题似乎在于使用tin
sinon.spy
处理此.fn的方式,而不是执行以下操作:

this.fnSpy = sinon.spy(this.fn)
this.subFnSpy = sinon.spy(this.subFn)
我们做了以下工作:

this.fnSpy = sinon.spy(this, 'fn')
this.subFnSpy = sinon.spy(this.fn, 'subFn')
我使用
this
来存储
fn
subFn
,这一事实缓解了这种情况