我正在使用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使用了browerify的常量并使我的测试失败。
如果我将constants
重命名为"^constantsxxx(.*)$": "<rootDir>/app/constants$1"
之类的其他名称,则它可以工作。但这只是出于其他库的存在而不得不重命名自己的变量的一种愚蠢行为。你有什么主意吗?