2017-08-17 9 views
3

私は関数呼び出しでスパイするためにモカとサイロンを使用しています。関数は正しく呼び出されますが、スパイはそれを追跡していません。ここで Sinonスパイ関数が呼び出されましたが、追跡されませんでした

は私が
export default (() => { 

    function test1(){ 
     console.log('called second func'); 
     return 5; 
    } 

    function callThis(){ 
     console.log('called first func'); 
     test1(); 
    } 

    return { 
     test1, 
     callThis 
    }; 

})(); 

をテストしていモジュールであり、ここでのテスト、私は基本的に最初の関数を呼び出しますが、結果として呼ばれている第2の機能を確認したいのです

import Common from './common'; 

describe('spy test',() => { 
    var setSpy = sinon.spy(Common, 'test1'); 

    Common.callThis(); 

    var result = setSpy.called; 

    it(`does the test`,() => { 
     expect(result).to.equal(true); 
    }); 

}); 

です。コンソールのログにはこれが起こっていると伝えられますが、スパイは偽を返し、スパイしていることに気付かないのです。何か不足していますか?

答えて

5

sinon.spy(Common, 'test1');に電話するときは、Commonオブジェクトのtest1フィールドを変更してスパイに置き換えます。ただし、common.jsにあるコードは、モジュールがエクスポートするオブジェクトを通じてtest1を呼び出す代わりに、test1を直接に呼び出しています。したがって、Common.callThis()を実行すると、スパイには触れられず、観察されたエラーが発生します。

export default (() => { 

    var obj = {}; 

    obj.test1 = function test1(){ 
     console.log('called second func'); 
     return 5; 
    } 

    obj.callThis = function callThis(){ 
     console.log('called first func'); 
     // This calls `test1` through `obj` instead of calling it directly. 
     obj.test1(); 
    } 

    return obj; 
})(); 

はここにあなたのテストに合格することが可能になる修正common.jsファイルです

関連する問題