开玩笑无法区分节点模块名称和moduleNameMapper别名

时间:2018-10-04 09:15:51

标签: reactjs jestjs node-modules enzyme

我正在使用React并使用JestEnzyme进行测试,在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使用了browerify的常量并使我的测试失败。

如果我将constants重命名为"^constantsxxx(.*)$": "<rootDir>/app/constants$1"之类的其他名称,则它可以工作。但这只是出于其他库的存在而不得不重命名自己的变量的一种愚蠢行为。你有什么主意吗?

0 个答案:

没有答案