使用Jasmine来“spyOn”一个(不同的)闭包中的函数

时间:2016-01-06 03:46:56

标签: jasmine closures browserify require spyon

我们正在使用require和Browserify,因此导入的单功能模块如下:

var loadJson = require('../loadJson');

并像这样使用:

x = loadJson(url);

我想spyOn表示loadJson函数,但似乎不可能。

这不是一个全局函数,所以这不起作用:

spyOn(window, 'loadJson')

这不是本地功能,所以这不起作用:

loadJson = createSpy('loadJsonSpy', loadJson).and.callThrough();

当我require模块进入我的Jasmine规范时,该函数在该闭包内部可见,但这与其他模块实际上使用loadJson实际上不同。

简而言之,我认为在这种情况下不可能使用spyOn - 这是正确的吗?任何有创意的解决方法?

1 个答案:

答案 0 :(得分:0)

如果loadJson是单身,那么你可以这样做。

var functionsToSpyOn = {loadJson: loadJson}
spyOn(functionsToSpyOn, 'loadJson')

这是我遇到同样问题时使用的解决方法。