1

我们正在使用require和 Browserify,所以单功能模块是这样导入的:

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

并像这样使用:

x = loadJson(url);

我想要spyOn那个 loadJson 函数,但这似乎是不可能的。

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

spyOn(window, 'loadJson')

它不是本地函数,所以这不起作用:

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

当我require将模块添加到我的 Jasmine 规范中时,该函数在该闭包内可见,但这与实际实际使用的其他模块不同loadJson

简而言之,我认为在这种情况下不可能使用spyOn它——对吗?有什么创造性的解决方法吗?

4

1 回答 1

0

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

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

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

于 2016-01-06T18:24:02.090 回答