当使用类名(https://www.npmjs.com/package/classnames)库时,我在Jest上运行测试用例时遇到了问题:
抛出错误:classnames_1.default不是一个函数
它正在与网站本身上的webpack一起工作..所以我不想更改导入。
我可以选择模拟类名进行测试以提供类似的行为。还有其他解决方法吗?
有人遇到过这个问题吗?
这是我在package.json中的玩笑配置:"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/" ] }
谢谢
最佳答案
您可能正在使用css-loader
,因此它可用于Webpack。问题是Jest不会使用css-loader
加载CSS文件,您有责任告诉Jest如何加载CSS文件。一种方法是使用identity-obj-proxy。
执行npm i -D identity-obj-proxy
(或根据需要使用yarn进行安装)
并将此配置添加到您的Jest配置文件中
"moduleNameMapper": {
"^.+\\.css$": "identity-obj-proxy"
}
您可以在this document中找到更多详细信息。