Dav*_*ein 5 reactjs jestjs react-hooks
我想放弃使用,jest.resetModules因为我想重置两个模块,但在所有运行中保留一个模块。
我原来让事情正常工作的代码是这样的:
beforeEach(() => {
jest.resetModules();
require('hooks/useMyProvider');
const useMyProvider = require('#/');
api = useMyProvider(); // scoped above
})
Run Code Online (Sandbox Code Playgroud)
然后在每次测试中,我都会做这样的事情:
// Mock hook since we can't spy on a function
jest.doMock('#/hooks/useActive', () => {
return () => {
return [true]
}
});
// re-require the component that requires useActive so it pulls latest mock
let MyComponent = require('#/components/MyComponent')
const { container } = render(<MyComponent />);
Run Code Online (Sandbox Code Playgroud)
我尝试重构为useMyProvider在文件顶部定义一次并jest.resetModules从 ; 中beforeEach删除
然后我这样做了:
let MyComponent;
jest.isolateModules(() => {
jest.doMock('#/hooks/useActive', () => {
return () => {
return [true]
}
});
MyComponent = require('#/components/MyComponent')
});
const { container } = render(<MyComponent />);
Run Code Online (Sandbox Code Playgroud)
当我在两次测试中执行此操作并在返回时进行交换时true,false无论哪个测试先进行都会坚持下去。自从我隔离了模块以来,我预计它每次都会改变。
| 归档时间: |
|
| 查看次数: |
2093 次 |
| 最近记录: |