如何从jest测试套件中排除CSS模块文件?

Rad*_*dex 4 javascript reactjs jestjs

我有反应组件进行测试,我使用webpack导入其CSS如下.

 import styles from '../../node_modules/openlayers/css/ol.css' // eslint-disable-line no-unused-vars
Run Code Online (Sandbox Code Playgroud)

运行jest后我得到错误:

C:\Users\...\node_modules\openlayers\css\ol.css:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){.ol-box {
                                                                                             ^
    SyntaxError: Unexpected token .
Run Code Online (Sandbox Code Playgroud)

如何从jest测试套件中排除css文件?

RM *_*Vos 8

还是更好,添加

yarn add --dev identity-obj-proxy
Run Code Online (Sandbox Code Playgroud)

并将以下内容添加到jest.config.json

{
  "jest":{
     "moduleNameMapper": {
      "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
      "\\.(css|less|scss|sass)$": "identity-obj-proxy"
    },
  }
}
Run Code Online (Sandbox Code Playgroud)


Pur*_*ory 7

您可以创建自己的模拟jest以防止处理css文件.

// __mocks__/styleMock.js

module.exports = {};
Run Code Online (Sandbox Code Playgroud)

然后在您package.json可以将任何css文件映射到选项styleMock.js下的文件moduleNameMapper:

"jest": {
  ...
  "moduleNameMapper": {
    ...
    "\\.(css|less)$": "<rootDir>/__mocks__/styleMock.js"
  },
  ..
},
Run Code Online (Sandbox Code Playgroud)

有关 详细信息,请参阅https://facebook.github.io/jest/docs/en/webpack.html#handling-static-assets.

  • 这篇文章描述了如何在几个不同的测试套件中处理这个问题。https://diessi.ca/blog/how-to-exclude-css-images-anything-from-unit-tests/ (3认同)