首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置Jest时使用react app-重新连线和自定义-cra?

如何配置Jest时使用react app-重新连线和自定义-cra?
EN

Stack Overflow用户
提问于 2019-06-12 11:46:30
回答 3查看 11K关注 0票数 7

我正在尝试在使用来自Jestreact-app-rewiredoverride函数的create-react-app中设置测试。我设置了一个相对路径别名,并在运行测试时抛出错误cannot find module

这是密码..。

代码语言:javascript
复制
// LoginForm.test.js

import React from 'react';
import { render, fireEvent } from '@testing-library/react';
import LoginForm from './LoginForm';


it('submits', () => {
  const onSubmit = jest.fn();
  const { getByText } = render(<LoginForm onSubmit={onSubmit} />);
  fireEvent.click(getByText('Log in'));
  expect(onSubmit).toHaveBeenCalled();
});
代码语言:javascript
复制
// config-overrides.js

const {
  override,
  fixBabelImports,
  addLessLoader,
  addBabelPlugin
} = require("customize-cra");

module.exports = override(
  fixBabelImports("import", [
    {
      libraryName: "antd",
      libraryDirectory: "es"
      // style: true,
    },
    {
      libraryName: "ant-design-pro",
      libraryDirectory: "lib"
      // style: true,
    }
  ]),

  addBabelPlugin([
    "babel-plugin-root-import",
    {
      rootPathSuffix: "./src"
    }
  ]),

  addLessLoader({
    javascriptEnabled: true,
    modifyVars: {
      "@select-item-selected-font-weight": "500",
      "@font-family":
        '"Futura W01", "Futura", -apple -system, BlinkMacSystemFont, "Segoe UI", sans-serif',
      "@pagination-font-family":
        '"Futura W01", "Futura", -apple -system, BlinkMacSystemFont, "Segoe UI", sans-serif',
      "@statistic-font-family":
        '"Futura W01", "Futura", -apple -system, BlinkMacSystemFont, "Segoe UI", sans-serif'
    }
  })
);

任何建议都非常感谢,谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-27 07:02:14

这可能有点旧,但我只是偶然发现并解决了它,也许它可以帮助其他人。

反应应用重新连线使用反应-脚本下的引擎盖,所以它不会拿起你的webpack配置文件。然而,有一种方法可以自定义它,您可以将jest配置放在package.json的根目录中:

代码语言:javascript
复制
"jest": {
    "moduleNameMapper": {
        "^@app(.*)$": "<rootDir>/src/ui/app$1"
    },
    "setupFiles": [
       "<rootDir>/config/jest/setupTests.js"
    ]
}

如果您转到react-script /test的源代码,并看到它正在创建jest配置,那么您可以看到react-script正在获取这个配置:

const createJestConfig = require('./utils/createJestConfig');

该文件使用package.json中的jest配置覆盖默认配置:

const overrides = Object.assign({}, require(paths.appPackageJson).jest);

paths.appPackageJson是你的package.json

票数 12
EN

Stack Overflow用户

发布于 2019-06-12 12:01:05

由于测试不是通过webpack进行的,路径别名将无法工作。但是,它们确实会通过Babel,这样您就可以使用“Babel-plugin-模块-解析器”。通常你会这样做:

代码语言:javascript
复制
// .babelrc
{
"plugins": [
  ["module-resolver", {
    "root": ["./src"],
    "alias": {
      "test": "./test",
      "components": "./src/components"
    }
  }]
 ]
}

但是,看看上面的override,它看起来可能会奏效:

代码语言:javascript
复制
addBabelPlugin([
  "babel-plugin-root-import",
  {
    rootPathSuffix: "./src"
  },
  "module-resolver",{
      "root": ["./src"],
       "alias": {
          "test": "./test",
          "components": "./src/components"
       }
   }
 ])
票数 2
EN

Stack Overflow用户

发布于 2022-04-22 12:58:52

你可以用.babelrc,我是那样做的

阅读react的README.md -应用程序-重新连线,它对我有很大帮助。

代码语言:javascript
复制
// for jest 
{
    "plugins": [
        [
            "babel-plugin-root-import",
            {
                "rootPathSuffix": "src"
            }
        ]
    ]
}

它是为了

"babel-plugin-root-import":"~6.4.1“”定制-cra“:"~0.9.1”"react":"~16.8.6“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56561503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档