Jest-тестирование электронного / реактивного компонента с использованием window.require - PullRequest
3 голосов
/ 30 апреля 2019

В настоящее время я создаю приложение Electron, которое использует React для создания интерфейса. Чтобы получить доступ к фс, я использовал:

const fs = window.require('fs');

Что отлично работает в электронном окне.

Проблема в том, что когда я пишу шутливые тесты для любых компонентов, которые используют window.require ('fs'), я получаю следующую ошибку при запуске теста.

TypeError: window.require is not a function

Я просмотрел документацию для Jest, и кажется, что решение состоит в том, чтобы сгенерировать макет окна с помощью ручного макета (см. «Методы насмешек, которые не реализованы в JSDOM» на https://jestjs.io/docs/en/manual-mocks). Однако, когда я попытался смоделировать window.require, добавив вверху мой тестовый файл

window.require = jest.fn(); 

Я все еще получаю ту же ошибку TypeError.

Я очень новичок в создании шуток Jest, поэтому любая помощь с этим будет высоко ценится.

Мой текущий тестовый файл (Component.test.js) выглядит как

window.require = jest.fn();

import React from 'react';
import renderer from 'react-test-renderer';
import Component from '../index';

describe('Testing', () => {
    it('Component renders correctly', () => {
        const component = renderer.create(<Component />);
        let tree = component.toJSON();
        expect(tree).toMatchSnapshot();
    });
});

1 Ответ

0 голосов
/ 01 мая 2019

Добавьте эту строку в начале теста (или в установочном файле setupFilesAfterEnv):

window.require = require;

Подробности

electron поставляет window.require, но не определяется при запуске модульных тестов с Jest.

По умолчанию Jest обеспечивает среду, подобную браузеру, используя jsdom, которая включает windowobject.

Приведенная выше строка макетирует window.require, устанавливая ее равной текущему значению require.

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