Модуль Mocking Node, импортированный в компонент React с Jest + Enzyme - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь протестировать компонент React с помощью Jest и Enzyme, но мой тест не запускается, потому что, похоже, возникают проблемы с определенным модулем узла. Модуль, который нарушает тест, фактически импортируется из компонента, который находится внутри того, который я пытаюсь проверить.

Вот иерархия:

  • Insights
    • BuildOnScrollHelper ( здесь импортируется модуль узла ).

Когда я запускаю этот тест:

import React from 'react';
import { shallow } from 'enzyme';
import { View } from 'react-native';
import { Insights } from '../../containers/Insights';
import insightsMockData from '../../mocks/data/insights';

describe('Insights Container', () => {
  let cmp;

  beforeEach(() => {
    cmp = shallow(
      <Insights
        {...insightsMockData}
        loadReports={jest.fn()}
        fetchGraph={jest.fn()}
      />,
    );
  });

  it('does stuff', () => {
    console.log(cmp.debug());
  });
});

Я получаю эту ошибку от Jest в консоли:

enter image description here

Если я зайду в свой Insights React Component и закомментирую компонент BuildOnScrollHelper ( и его оператор импорта ), тест будет работать отлично.

У меня было две идеи:

  1. Мне даже не нужно издеваться над модулем узла, возможно, я мог бы просто смоделировать BuildOnScrollHelper сам по себе? Для этого теста мне наплевать на функциональность BuildOnScrollHelpers .
  2. Мне нужно будет смоделировать модуль узла.

Кто-нибудь знает, как мне поступить так, что считается хорошей практикой? Я потратил несколько часов, пытаясь найти решение этой проблемы, но все еще не могу заставить мой тест работать.

В идеале я хотел бы получить ответ, содержащий несколько примеров кода, а не просто ссылку на фрагмент документации.

1 Ответ

0 голосов
/ 07 ноября 2018

Проверьте эту ссылку out.

Модули Mocking Node

Если модуль, над которым вы работаете, является модулем Node (например, lodash), то макет должен быть помещен в каталог mocks рядом с node_modules (если вы не настроили корни, чтобы указывать на другую папку чем корень проекта) и будет автоматически издеваться. Нет никаких необходимо явно вызвать jest.mock ('имя_модуля').

Модули Scoped можно смоделировать, создав файл в каталоге структура, которая соответствует имени модуля области действия. Например, чтобы смоделируйте модуль с именем @ scope / project-name, создайте файл в mocks/@scope/project-name.js, соответственно создав каталог @ scope /.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...