如何在测试之间重置导入的模块
- 论坛
- 如何在测试之间重置导入的模块
7 浏览
如何在测试之间重置导入的模块
假设我有一个模块,在应用程序的开始时需要初始化一次(传递配置)。模块看起来像这样:
MyModule.js
let isInitiazlied; const myModule = { init: function() { isInitiazlied = true; }, do: function() { if (!isInitiazlied) throw "error" //DO THINGS } } export default myModule;
我想使用jest进行单元测试。测试文件看起来像这样:
MyModule.test.js
import myModule from './MyModule' describe('MyModule', () => { describe('init', () => { it('调用时不会抛出异常', () => { expect(() => myModule.init()).not.toThrow(); }); }) describe('do', () => { it('未初始化时抛出异常', () => { expect(() => myModule.do()).toThrow(); }); }) })
当我运行测试时,第二个测试失败,因为模块已经初始化,所以异常没有被抛出。
我尝试在beforeEach中使用jest.resetModules(),但没有起作用。
有没有办法解决这个问题(不同的模块模式/测试用例)?