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"
}

Вы можете найти более подробную информацию в этом документе.

Другие вопросы по тегам