javascript - Jest 快照 @import CSS 失败

标签 javascript css reactjs testing jestjs

我无法在当前的jest 设置中使用@import

npm run test

> test5@0.0.1 test /var/www/test5
> jest

 FAIL  src/components/Menu/index.spec.js
  ● Test suite failed to run

    /var/www/test5/src/components/Menu/style.css:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){@import "../shared/vars.css";
                                                                                             ^

    SyntaxError: Invalid or unexpected token

       7 | 
       8 | //Styles
    >  9 | import style from './style.css';
      10 | 
      11 | class Menu extends React.Component {
      12 |  constructor (props){

      at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:318:17)
      at Object.<anonymous> (src/components/Menu/index.js:9:14)
      at Object.<anonymous> (src/components/Menu/index.spec.js:3:14)

样式.css

@import "../shared/vars.css";

.menu {
  background: #322e31;
  color: $wtext;
  width: 80vw;
  max-width: 400px;
  position: fixed;
  right: -80vw;
  top: 0;
  height: 100vh;
  z-index: 3;

  h2,h3 {
    font-size: 16px;
    display: inline-block;
  }
}

package.json

  "jest": {
    "setupTestFrameworkScriptFile": "./node_modules/jest-enzyme/lib/index.js",
    "moduleFileExtensions": [
      "js"
    ],
    "moduleDirectories": [
      "node_modules"
    ],
    "testPathIgnorePatterns": [
      "<rootDir>/node_modules/",
      "<rootDir>/app/"
    ],
    "moduleNameMapper": {
      "moduleNameMapper": {
        "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
        "\\.(css)$": "identity-obj-proxy"
      }
    },
    "transform": {
      "^.+\\.js$": "babel-jest"
    }
  }

最佳答案

对我有用的配置是:

"moduleNameMapper": {
  "^[./a-zA-Z0-9$-]+\\.png$": "<rootDir>/src/public/__mocks__/ImageAndStyleDummy.js",
  "^[./a-zA-Z0-9$-]+\\.css$": "<rootDir>/src/public/__mocks__/ImageAndStyleDummy.js"
}   

您需要更改路径 <rootDir>/src/public/__mocks__/ImageAndStyleDummy.js到你自己的模拟。您甚至可以使用 fileMock.js根据实现情况,只需添加 css扩展到已经存在的正则表达式并删除专用于此扩展的行。或者创建一个新的专用于 css遵循相同的模式。

关于javascript - Jest 快照 @import CSS 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48404002/

相关文章:

javascript - Web Audio API 如何获取已播放缓冲区的数量并安排下一个缓冲区在它连续播放后立即播放?

css - ReactCSSTransitionGroup 没有动画高度

javascript - 从 componentDidMount 中的 api 获取数据返回 null

css - 减少列表项宽度以占据 Internet Explorer 11 中文本内容的确切大小

html - 响应式设计和带有 float div 的流畅图像

reactjs - 可重复使用的react-redux容器组件

javascript - 如何创建来自 api 的数组数据轮播

javascript - 锤子2.0 : Pinching a scrolling element

javascript - 我怎样才能有两个带有两个 Canvas 的输入文本

javascript - 列表中的喜欢按钮,按下效果始终位于第一个