我試圖在測試獨立模塊時模擬導入模塊中的方法。我能夠使用ES2015導入語法成功模擬導入的模塊,但模擬在整個測試過程中保持一致,並且有些情況下我想要更改模擬。在Jest單元測試中重置模擬模塊的值
我的文件看起來像這樣
// ModuleA
import ModuleB from 'ModuleB'
// ... code
// TestCase
import ModuleA from 'ModuleA'
import ModuleB from 'ModuleB'
jest.mock('ModuleB',() => {
return {
value: true
}
}
describe('ModuleA',() => {
it('returns true',() => {
// This test expects ModuleB.value to return true
});
it('returns false',() => {
// This doesn't work
ModuleB.value = jest.fn(() => false)
// This doesn't work either
jest.mock('ModuleB',() => {
return {
value: false
}
});
// This test expects ModuleB.value to return false in order to pass
});
});
我essentailly需要爲ModuleB
分離嘲笑。在過去,我可以簡單地使用var ModuleB = require('ModuleB');
而不是import
,然後在需要時撥打ModuleB.someMethodName = jest.fn()
。我只想在這些測試中只使用ES2015,並且使用剛纔提到的模式給我一個ModuleB is read-only
錯誤。