reactjs - 如何使用使用 es6 的 node_modules 设置 jest

标签 reactjs jestjs babeljs babel-jest

我有一个非常简单的测试:

describe('sanity', () => {
  it('sanity', () => {
    expect(true).toBeTruthy()
  })
})

我收到以下错误:
 FAIL  spec/javascript/sanity_test.js
  ● Test suite failed to run

    Jest encountered an unexpected token

    This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.

    By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".

    Here's what you can do:
     • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
     • If you need a custom transformation specify a "transform" option in your config.
     • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.

    You'll find more details and examples of these config options in the docs:
    https://jestjs.io/docs/en/configuration.html

    Details:

    /Users/piousbox/projects/ruby/<project>/node_modules/@atlaskit/tooltip/index.js:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){export { default } from './components/Tooltip';
                                                                                             ^^^^^^

    SyntaxError: Unexpected token export

      3 | import update from "immutability-helper";
      4 | import {components} from "react-select-2";
    > 5 | import Tooltip from "@atlaskit/tooltip";
        | ^
      6 | const isEqual = require("react-fast-compare");
      7 | import _, {replace} from "lodash";
      8 | import { get } from "$shared/request";

      at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:537:17)
      at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:579:25)
      at Object.<anonymous> (app/javascript/customer2/components/fob/fob_utils.js:5:1)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        1.593s

我有这个 .babelrc:
{
  "presets": ["@babel/react", "@babel/env"]
}

我如何使琐碎的测试通过?

最佳答案

马特的回答被接受 b/c 它是有见地的。为我所做的更改是在 package.json 中添加:

  "jest": {
    ...
    "transformIgnorePatterns": [
      "node_modules/(?!@atlaskit)"
    ],
您可以通过用 | 分隔它们来一次添加对多个包的支持。
  "jest": {
    ...
    "transformIgnorePatterns": [
      "node_modules/(?!module1|module2|etc)"
    ],

关于reactjs - 如何使用使用 es6 的 node_modules 设置 jest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60714101/

相关文章:

javascript - MUI React,最短日期

reactjs - 使用React Component的代理时查找失败

javascript - 创建 react 应用程序测试 "React is not defined"

将 ES6 转换为使用 Traceur 或 Babel 的 ES5 的 Maven 插件

reactjs - React 中副作用的定义和函数式编程中的一样吗?

javascript - 'this' 在 Reflux.createStore() 中未定义

reactjs - 如何在 React 中创建编辑按钮?

javascript - DOM 节点和 javascript 命名空间之间有什么关系?

typescript 和 babel-plugin-module-resolver : VS Code doesn't resolve imports

javascript - Webpack babel-loader 不解析箭头函数