You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不运行项目的情况下测试自研React组件库

解决Jest测试React组件库的"Cannot use import statement outside a module"问题

1. 补充安装必要依赖

执行命令安装babel相关工具,用于转译ES模块、React和TypeScript代码:

npm install --save-dev @babel/preset-env @babel/preset-react @babel/preset-typescript babel-jest

2. 配置Babel

在项目根目录创建babel.config.js,添加如下配置:

module.exports = {
  presets: [
    ['@babel/preset-env', { targets: { node: 'current' } }],
    '@babel/preset-react',
    '@babel/preset-typescript'
  ]
};

3. 完善Jest配置

更新根目录的jest.config.js,添加转译规则和必要配置:

module.exports = {
  testEnvironment: "jsdom",
  // 用babel-jest转译TSX/JSX/TS/JS文件
  transform: {
    '^.+\\.(ts|tsx|js|jsx)$': 'babel-jest'
  },
  // 识别的文件扩展名
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
  // 测试文件匹配规则
  testMatch: ['**/__tests__/**/*.+(ts|tsx|js)'],
  // 加载jest-dom的断言扩展(可选)
  setupFilesAfterEnv: ['<rootDir>/jest.setup.js']
};

如果需要使用@testing-library/jest-dom的断言(比如toBeInTheDocument),创建jest.setup.js并添加:

import '@testing-library/jest-dom';

4. 修正测试文件路径

你的测试文件src/__tests__/MyComponent.test.js中,导入路径错误,修正后代码:

import React from "react";
import { render } from "@testing-library/react";
// 修正路径,从../components导入
import MyComponent from "../components/MyComponent";

test("renders MyComponent correctly", () => {
  const { getByText } = render(<MyComponent />);
  expect(getByText("Hello, World!")).toBeInTheDocument();
});

5. 添加测试脚本

在package.json的scripts中添加:

"scripts": {
  "test": "jest"
}

现在执行npm test即可运行测试,无需启动项目环境。

内容的提问来源于stack exchange,提问作者sNNNk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:17:42