javascript - 如何在 React 中使用 jest.mock
问题描述
有没有办法jest.mock
在 React 中使用 's?例如,假设我想重用一个组件(例如 Storybook),但想模拟该原始 React 组件的导入/实现细节。这可能吗?如果可以,怎么做?谢谢!
示例组件.js:
import React from 'react';
import sampleFn from './sampleFn';
const SampleComponent = () => <h1>{sampleFn()}</h1>; // expected output: 'Hello World'
export default SampleComponent;
sampleMockComponent.js:
import React from 'react';
import SampleMockComponent from './sampleComponent';
jest.mock('./sampleFn');
const SampleMockComponent = () => <SampleComponent />; // expected output: 'Testing Mock'
sampleFn.js:
export default () => 'Hello World';
__mocks__/sampleFn.js:
export default () => 'Testing Mock';
解决方案
如果你想模拟不是为了测试的原因。我不建议你使用玩笑。
选择依赖注入模式。
import React from 'react';
import sampleFn from './sampleFn';
// Unless sample is supplied, sampleFn will be used by default
const SampleComponent = () => {
const { sample = sampleFn } = props;
return <h1>{sample()}</h1>;
}
export default SampleComponent;
推荐阅读
- python - 解析嵌套 JSON 格式的数据时出错
- reactjs - 反应 useReducer 调度
- angular - 如何在角度中使用引导程序和 Ionic
- wpf - 如何按日期正确排序 ObservableCollection?
- sql - 如何将注释总和添加到原始模型的列
- javascript - 如何访问在组件内的自定义 Vue js 插件中声明的变量?
- reactjs - 类型“DefaultRootState”上不存在属性“y”
- python - 如何在 django 中仅获取当前用户的帖子
- c# - 当我在 Api 中调用日志或使用 Web Api 和 Xamarin 表单注册 Api 时出现错误:“Java.Net.SocketException”
- r - r 比较数据框的最大年/月与当前年月