当使用classnames(https://www.npmjs.com/package/classnames)库时,我在 Jest 上运行测试用例时遇到问题:
它抛出错误: classnames_1.default不是函数
它正在网站上使用webpack ..所以我不想改变导入。
我可以选择模拟用于测试的类名来提供类似的行为。有没有其他方法可以解决这个问题?
是否有人遇到此问题?
这是我在package.json中的jest配置:
"jest": {
"globals": {
"API_HOST": "",
"DEV": false
},
"transform": {
".(ts|tsx)": "<rootDir>/node_modules/XXX-framework/jestTypeScriptPreProcessor.js"
},
"testRegex": "(/tests/.*|\.(test|spec))\.(js|jsx|ts|tsx)$",
"transformIgnorePatterns": [],
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"json"
],
"automock": false,
"clearMocks": true,
"resetMocks": true,
"coverageThreshold": {
"global": {
"branches": 50,
"functions": 50,
"lines": 50,
"statements": 50
}
},
"modulePaths": [
"<rootDir>/src",
"<rootDir>/node_modules/XXX-framework/src"
],
"unmockedModulePathPatterns": [
"<rootDir>/node_modules/react/",
"<rootDir>/node_modules/react-dom/",
"<rootDir>/node_modules/react-addons-test-utils/",
"<rootDir>/node_modules/enzyme/",
"<rootDir>/node_modules/XXX-framework/"
]
}
由于
答案 0 :(得分:0)
您可能正在使用css-loader
,因此它适用于Webpack。问题是Jest没有用css-loader
加载你的CSS文件,你有责任告诉Jest如何加载CSS文件。一种方法是使用identity-obj-proxy。
执行npm i -D identity-obj-proxy
(或根据需要使用纱线安装)
并将此配置添加到您的Jest配置文件
"moduleNameMapper": {
"^.+\\.css$": "identity-obj-proxy"
}
您可以在this document中找到更多详细信息。