【问题标题】:classnames_1.default is not a function when testing with Jest使用 Jest 进行测试时,classnames_1.default 不是函数
【发布时间】:2017-07-27 03:43:30
【问题描述】:

当使用类名 (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/" ] }

谢谢

【问题讨论】:

  • 你有没有设法解决这个问题?

标签: reactjs unit-testing jestjs es6-modules class-names


【解决方案1】:

您可能正在使用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找到更多详细信息。

【讨论】:

  • 我不想在测试中看到 css 样式。我只想看看元素在加载时是否有特定的类。 classnames 是一个简单的 js 库,用于根据参数返回单个类名字符串。它是 js 格式,因此甚至不需要从 typescript 文件转换为 javascript 文件。
  • 您介意在此处粘贴有关您如何使用classnames 的代码吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
  • 2018-10-28
  • 2019-05-16
  • 2019-06-06
  • 2021-12-14
  • 2018-02-10
相关资源
最近更新 更多