2017-07-14 65 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 
 
    }) 
 
})