2017-07-14 15 views
1

Sinonを使用して特定の関数が別の関数によって呼び出されたかどうかをテストしたいとしましょう。Sinonを使ってインポートされた関数を偵察するには?

fancyModule.js

export const fancyFunc =() => { 
    console.log('fancyFunc') 
} 

export default const fancyDefault =() => { 
    console.log('fancyDefault') 
    fancyFunc() 
} 

fancyModule.test.js

import sinon from 'sinon' 
import fancyDefault, { fancyFunc } from '../fancyModule' 

describe('fancyModule',() => { 
    it('calls fancyFunc',() => { 
    const spy = sinon.spy(fancyFunc) 
    fancyDefault() 
    expect(spy.called).to.be.true 
    }) 
}) 

私はこのテストを実行すると、実際の値は常にです。また、元の関数fancyFunc()が呼び出されるのではなく、模擬される代わりに出力(fancyFunc)が呼び出されます。

+0

「fancyModule.js」の 'export'文を表示してください。 –

+0

ありがとう、私は輸出で自分の質問を更新しました。 – Marc

答えて

0

あなたが輸入のスタイルを変更し、この

のようなオブジェクトとして、あなたのモジュールをインポートすることができます

import sinon from 'sinon' 
 
import * as myModule from '../fancyModule' 
 

 
describe('fancyModule',() => { 
 
    it('calls fancyFunc',() => { 
 
    const spy = sinon.spy(myModule, 'fancyFunc'); 
 
    myModule.fancyDefault() 
 
    expect(spy.called).to.be.true 
 
    }) 
 
})

関連する問題