2017-08-22 16 views
1

多くの研究を行っても、親オブジェクトなしでエクスポートされた関数をモックする方法は見つけられません。たとえば、私は、モック関数にしようとしている次のようにエクスポート:Jasmine spy on関数が親オブジェクトなしでエクスポートされ、NODEでES6を使用してインポートされました

import {thing} from 'emvio-util-responses; 


//call some function that calls thing() 

spyOn(???, 'thing').and.returnValue({}); 
expect(???.thing).toHaveBeenCalled(); 
:テストファイルにこれらをインポートするとき、私はこのようにインポートしてみてください

module.exports = function thing(event) {}; 

OR ES6

export function thing(event) {}; 

私はこれを達成するための多くの方法を試しましたが、モックは呼ばれません。 *は、*をインポートし、エイリアスを親オブジェクトとして提供することをお勧めします。このように:

import * as SomeObj from 'emvio-util-responses; 


//call some function that calls thing() 

spyOn(SomeObj , 'thing').and.returnValue({}); 
expect(SomeObj .thing).toHaveBeenCalled(); 

これは機能しません。

その他windowオブジェクト

spyOn(window, 'thing').and.returnValue({}); 

を使用することをお勧めしかし、私はノードにいるよ:(あなたはES6モジュールを使用する場合

答えて

0

代わりにあなたが使用することができますように、すべての輸出は命名されているCommonJS:

export default (event) => {} 

&スパイを

import * as SomeObj from 'emvio-util-responses' 

... 
beforeEach(() => { 
    spyOn(someObj, 'default') 
}); 
関連する問題