classnames_1.default не является функцией при тестировании с Jest
Я сталкиваюсь с проблемой при запуске тестовых случаев на Jest при использовании библиотеки имен классов ( https://www.npmjs.com/package/classnames):
Выдает ошибку: classnames_1.default не является функцией
Он работает с веб-пакетом на самом сайте... поэтому я не хочу менять импорт.
У меня есть возможность смоделировать имена классов для тестирования, чтобы обеспечить похожее поведение. Есть ли другой способ решить эту проблему?
Кто-нибудь сталкивался с этой проблемой?
Вот моя шутливая конфигурация в 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/"
]
}
Спасибо
1 ответ
Вы, вероятно, используете css-loader
так что он работает с Webpack. Проблема в том, что Jest не загружает ваши CSS-файлы css-loader
и вы обязаны сообщить Jest, как загружать файлы CSS. Одним из способов сделать это является использование identity-obj-proxy.
Делать npm i -D identity-obj-proxy
(или используйте пряжу для установки, если хотите)
и добавьте этот конфиг в ваш конфигурационный файл Jest
"moduleNameMapper": {
"^.+\\.css$": "identity-obj-proxy"
}
Вы можете найти более подробную информацию в этом документе.