Создать ручной макет для @ material-ui withStyles в React with Jest - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь создать ручные макеты для модуля @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

СпасибоВам все для вас помощь!

...