reactjs - 用于测试 json 结构上的组件映射的笑话问题
问题描述
我创建了一个下一个函数组件,它基本上使用创建标签值负载中的值映射到一个 json 文件,如下所示。
import FooterCerts from "constants/json/FooterCerts.json";
import { NextFunctionComponent } from "next";
import * as React from "react";
import styles from "./index.scss";
export const FooterLogos: NextFunctionComponent = () => (
<React.Fragment>
<style jsx={styles.toString()}>{styles}</style>
<ul>
{FooterCerts.map((logo) => (
<a
href={logo.HREF}
title={logo.TITLE}
rel="noopener external"
target="_blank"
data-qa={logo.DATA_QA}
key={logo.KEY}
>
<li>
<img src={logo.FILE_PATH} alt={logo.ALT} />
</li>
</a>
))}
</ul>
</React.Fragment>
);
我的问题是在为这个组件创建单元测试时出现的。这是一个试图创建快照的基本测试。
import * as React from "react";
import { cleanup, render } from "react-testing-library";
import { FooterLogos } from ".";
afterEach(cleanup);
it("renders as expected", () => {
const { container } = render(<FooterLogos />);
expect(container).toMatchSnapshot();
});
这在运行此测试时会导致问题
TypeError: Cannot read property 'map' of undefined
我正在使用 24.1.0 的 Jest 最新版本,24.0.0 的 ts-jest,其 jest 配置为:
module.exports = {
transform: {
"^.+\\.tsx?$": "ts-jest",
},
testRegex: "(/src/.*)\\.(test.tsx?)$",
moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"],
roots: ["<rootDir>/src"],
moduleNameMapper: {
"^.*\\.scss$": __dirname + "/jest.stub.ts",
"^components(.*)$": "<rootDir>/src/components$1",
"^helpers(.*)$": "<rootDir>/src/helpers$1",
"^pages(.*)$": "<rootDir>/src/pages$1",
"^services(.*)$": "<rootDir>/src/services$1",
"^state(.*)$": "<rootDir>/src/state$1",
"^fixtures(.*)$": "<rootDir>/src/fixtures$1",
"^constants(.*)$": "<rootDir>/src/constants$1",
},
setupFilesAfterEnv: ["./jest.setup.ts"],
};
有关如何解决此问题的任何建议都会很好,或者如果需要任何其他信息来帮助,请告诉我。谢谢
解决方案
通过更改 jest 配置来解决此问题:
transform: {
"^.+\\.tsx?$": "ts-jest",
},
至:
transform: {
"^.+\\.tsx?$": "babel-jest",
},
推荐阅读
- jquery - 使用 render_to_string 库不起作用
- c++ - std::string 标头是否仅在 Visual Studio 中?
- sql - 当列在位置 2 中包含 1 时排除行而不使用函数
- python - 如何安装 practnlp 工具
- asp.net - Bootstrap 复选框在回发后失去选中状态。我怎样才能阻止这个?
- http - 微服务上下文中的 WireMock 记录 - 一个客户端调用多个服务器
- android - 从后台返回时,Android 片段被置于前一个片段之上
- selenium - 在类路径中找不到类:com.orange.testcases.LoginPageTest,
- excel - 突出显示一行中两个相邻列中的数据实例在不同行中重复的实例
- python-3.x - 如何干净地处理彼此非常相似的多种情况