1

Browserifyを使用しているrequireため、単機能モジュールは次のようにインポートされます。

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

次のように使用します。

x = loadJson(url);

その loadJson 関数を使いたいのspyOnですが、それは不可能のようです。

これはグローバル関数ではないため、これは機能しません。

spyOn(window, 'loadJson')

これはローカル関数ではないため、これは機能しません。

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

モジュールを Jasmine 仕様に入れるとrequire、関数はそのクロージャ内に表示されますが、実際に使用している他のモジュールと同じクロージャではありませんloadJson

要するに、この場合はおそらく使用できないと思いますspyOn-それは正しいですか? クリエイティブな回避策はありますか?

4

1 に答える 1

0

がシングルトンの場合loadJson、これを行うことができます。

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

これは、同じ問題が発生したときに使用した回避策です。

于 2016-01-06T18:24:02.090 に答える