我正在尝试在使用来自Jest和react-app-rewired的override函数的create-react-app中设置测试。我设置了一个相对路径别名,并在运行测试时抛出错误cannot find module
这是密码..。
// 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();
});// 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'
}
})
);任何建议都非常感谢,谢谢。
发布于 2019-11-27 07:02:14
这可能有点旧,但我只是偶然发现并解决了它,也许它可以帮助其他人。
反应应用重新连线使用反应-脚本下的引擎盖,所以它不会拿起你的webpack配置文件。然而,有一种方法可以自定义它,您可以将jest配置放在package.json的根目录中:
"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
发布于 2019-06-12 12:01:05
由于测试不是通过webpack进行的,路径别名将无法工作。但是,它们确实会通过Babel,这样您就可以使用“Babel-plugin-模块-解析器”。通常你会这样做:
// .babelrc
{
"plugins": [
["module-resolver", {
"root": ["./src"],
"alias": {
"test": "./test",
"components": "./src/components"
}
}]
]
}但是,看看上面的override,它看起来可能会奏效:
addBabelPlugin([
"babel-plugin-root-import",
{
rootPathSuffix: "./src"
},
"module-resolver",{
"root": ["./src"],
"alias": {
"test": "./test",
"components": "./src/components"
}
}
])发布于 2022-04-22 12:58:52
你可以用.babelrc,我是那样做的
阅读react的README.md -应用程序-重新连线,它对我有很大帮助。
// for jest
{
"plugins": [
[
"babel-plugin-root-import",
{
"rootPathSuffix": "src"
}
]
]
}它是为了
"babel-plugin-root-import":"~6.4.1“”定制-cra“:"~0.9.1”"react":"~16.8.6“
https://stackoverflow.com/questions/56561503
复制相似问题