Я пытаюсь создать ручные макеты для модуля @material-ui/core/styles
, который экспортирует HOC с именем withStyles
.
Использование встроенного макета с jest.mock
прекрасно работает, но когда я пытаюсь переместить эту логику в общую папку __mocks__
, она больше не работает.
Я удалил из тестируемого файла весь ненужный код, просто сохранив две строки, создающие проблемы:
import { withStyles } from '@material-ui/core/styles';
console.log('loaded styles:', withStyles);
export default 'hello';
И тест также упростился, чтобы посмотреть, является ли макетработает следующее:
import test from '../test';
console.log(test);
Я пытался создать папку __mocks__
в корне проекта, где у меня есть папка node_modules
.
Там я создал первую папку с именем @material-ui
, а внутри нее еще одну папку с именем core
.Внутри этой папки у меня есть файл с именем styles.js
со следующим кодом:
export const withStyles = 'hello world';
Таким образом, структура выглядит так:
- __mocks__
- @material-ui
- core
- styles.js
- node_modules
Это код, который работает с макетомопределяется в том же тестовом файле:
jest.mock('@material-ui/core/styles', () => ({
withStyles: () => Component => props => (
<Component
classes=""
{...props}
/>
),
}));
Что происходит с папкой __mocks__
, так это то, что если я не вызываю
jest.mock('@material-ui/core/styles');
внутри моего тестового файла, он используетреальный withStyles
, поэтому реальный модуль.Никакой макет не используется.
Если я использую:
jest.mock('@material-ui/core/styles');
Он использует автоматический макет, автоматически генерируемый шуткой (или выглядит так), пропуская тот, который я определил выше.
Просто примечание о пакетах, я использовал CRA
для начальной загрузки приложения, и у меня сейчас jest
версия 20, с react-scripts
версией 1.0.17
СпасибоВам все для вас помощь!