Jest не может различить имя модуля узла и псевдоним moduleNameMapper - PullRequest
0 голосов
/ 04 октября 2018

Я использую React и тестирую с Jest & Enzyme, в package.json Я устанавливаю moduleNameMapper с псевдонимом к папке в корне моего приложения:

"jest": {
    "moduleNameMapper": {
        "^constants(.*)$": "<rootDir>/app/constants$1",
    }
}

В моемкомпонент hello.js я его импортировал

import HelloConst from 'constants';

class Hello {}

export default Hello;

файл теста компонента hello.test.js имеет:

// import stuffs

describe('test', () => {
    test('match snapshot', () => {
        let wrapper = shallow(<Hello />);
        expect(wrapper).toMatchSnapshot();
    });
});

Проблема в моем node_modules есть библиотека с именем constants_browserify, котораяиспользуя то же имя constants, что и его определенные константы.Jest не может различить мои константы и browserify константы, поэтому, когда я запускаю тест, Jest использует константы браузера и делает мой тест неудачным.

Если я переименую свой constants в другое имя, например "^constantsxxx(.*)$": "<rootDir>/app/constants$1", то это сработает.Но это глупо, что я должен переименовать свою собственную переменную только из-за того, что существует другая библиотека.У тебя есть идеи?

...