小编Tra*_*Law的帖子

使用 Jest 在 React 中为 @material-ui withStyles 创建手动模拟

我正在尝试为该模块创建手动模拟@material-ui/core/styles,该模块导出名为withStyles.

使用内联模拟可以jest.mock完美地工作,但是当我尝试将此逻辑移动到可共享__mocks__文件夹中时,它不再工作。

我从正在测试的文件中删除了所有不必要的代码,只保留产生问题的两行:

import { withStyles } from '@material-ui/core/styles';

console.log('loaded styles:', withStyles);

export default 'hello';
Run Code Online (Sandbox Code Playgroud)

测试也简化了,只是为了看看模拟是否正常工作,如下所示:

import test from '../test';
console.log(test);
Run Code Online (Sandbox Code Playgroud)

__mocks__我尝试的是在项目的根目录中创建一个文件夹,其中有该node_modules文件夹。

在那里我创建了第一个名为 的文件夹@material-ui,并在其中创建了另一个名为 的文件夹corestyles.js在这个文件夹中,我有一个使用以下代码调用的文件:

export const withStyles = 'hello world';
Run Code Online (Sandbox Code Playgroud)

所以结构看起来像:

- __mocks__
  - @material-ui
    - core
      - styles.js
- node_modules
Run Code Online (Sandbox Code Playgroud)

这是有效的代码,在同一测试文件中定义了模拟:

jest.mock('@material-ui/core/styles', () => ({
  withStyles: () => Component => props => (
    <Component
      classes=""
      {...props}
    />
  ),
}));
Run Code Online (Sandbox Code Playgroud)

该文件夹发生的情况__mocks__ …

javascript mocking reactjs jestjs material-ui

5
推荐指数
1
解决办法
2051
查看次数

标签 统计

javascript ×1

jestjs ×1

material-ui ×1

mocking ×1

reactjs ×1