reactjs - Jest 测试在 tsx 语法上失败
问题描述
我目前正在对我的项目实施开玩笑测试。该项目由 ts + tsx 文件组成。以下是我的jest.config.js
文件。
module.exports = {
preset: "ts-jest",
testEnvironment: "jsdom",
cacheDirectory: ".jest-cache",
coverageDirectory: ".jest-coverage",
coverageReporters: ["html", "text"],
testMatch: ["**/target/**/components/**/__tests__/**/*.[jt]s?(x)"],
transformIgnorePatterns: [
"node_modules/(?!@ngrx|(?!deck.gl)|ng-dynamic)",
"/app-extensions/"
],
transform: {
"^.+\\.jsx?$": "babel-jest",
"^.+\\.ts?$": "ts-jest",
'^.+\\.tsx?$': "babel-jest"
},
moduleNameMapper: {
"\\.(css|jpg|png|svg)$": "<rootDir>/empty-module.js"
},
coverageThreshold: {
global: {
branches: 100,
functions: 100,
lines: 100,
statements: 100
}
},
};
但是当我构建应用程序时,会抛出以下错误并失败。我在这里做错了什么?我尝试使用 ts-jest 和 babel-jest 转换 tsx 文件,但都因此错误而失败。
解决方案
.tsx 文件是用 Babel 而不是 TypeScript 处理的,Babel 不知道: ReactElement
类型部分。
^.+\\.ts?$
正则表达式不正确,因为它匹配 .t 和 .ts 文件,但不匹配 .tsx。
它应该是:
transform: {
"^.+\\.jsx?$": "babel-jest",
'^.+\\.tsx?$': "ts-jest"
},
推荐阅读
- testing - 如何在测试期间模拟 Sails.js / Waterline 模型
- reactjs - 从 React SSR 访问 cookie
- javascript - 将 Bootstrap 升级到版本 4 后如何让轮播再次工作?
- asp.net-core - 使用 Serilog(或任何结构化日志库)的 Steeltoe 动态日志配置
- excel - 使用 VBA 登录到安全网页
- c# - 将日期时间转换为带有月份名称的字符串并返回日期不是字符串
- python - 如何重置迭代集合的循环?
- ios - Swift 中的模块化文本占位符块
- angular - Angular 7,共享相同导航模板的公共路由和安全路由
- graphql - 在 Gatsby-node.js 中检索多种数据类型时,graphql 重复文档错误