Pla*_*cid 4 uuid reactjs jestjs
我正在尝试为使用uuid生成唯一ID的React组件创建开玩笑的快照测试。我正在尝试模拟uuid功能。但是嘲笑似乎没有用。
零件:
import React from 'react';
import v1 from 'uuid/v1';
class MyComponent extends React.Component {
// Other codes ...
render() {
const id = v1();
return (
<div>
<label htmlFor={id}>
<input type="checkbox"/>
</label>
</div>
)
}
}
export default MyComponent;
Run Code Online (Sandbox Code Playgroud)
测试:
import React from 'react';
import renderer from 'react-test-renderer';
import MyComponent from './MyComponent';
describe('<MyComponent/>', () => {
it('renders correctly', () => {
jest.mock('uuid/v1', () => jest.fn(() => 1));
const tree = renderer.create(<Checkbox />).toJSON();
expect(tree).toMatchSnapshot();
});
});
Run Code Online (Sandbox Code Playgroud)
问题是您在导入要测试的模块后对模块进行了模拟。因此,导入的模块具有导入的原始版本uuid/v1。然后您进行模拟,uuid/v1但这不会起作用,MyComponent因为它已经具有对原始版本的引用。
在jest.mock测试的最外层块中使用时,它将被提升到模块的顶部,因此uuid/v1在将其导入之前,将进行开玩笑的模拟,这MyComponent就是这种情况的原因
| 归档时间: |
|
| 查看次数: |
1498 次 |
| 最近记录: |