假设我们要测试使用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
})
})
当我运行此测试时,实际值始终为 false 。同样,原始函数
fancyFunc()
被调用(输出fancyFunc)而不是被模拟。 最佳答案
您可以更改导入样式,并像这样将模块导入为对象
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
})
})