我正在尝试为该模块创建手动模拟@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,并在其中创建了另一个名为 的文件夹core。styles.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__ …