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

如何修复.tsx文件Banner组件的单元测试类型报错问题

错误原因

你的Banner组件通过Properties类型声明了两个必填入参:无返回值的close方法、字符串类型的text,测试用例中渲染组件时未传入这两个必填参数,因此触发了TypeScript类型校验报错。

修复方案

你只需要在测试时给Banner传入符合类型要求的两个参数即可,可使用Jest的mock函数模拟close回调,示例代码如下:

// Banner.test.tsx
import { render, screen, fireEvent } from '@testing-library/react';
import Banner from './Banner';

test("Check that all type Properties are being used", () => {
  // 构造符合类型要求的入参
  const mockClose = jest.fn();
  const testText = "测试横幅文本";
  
  // 传入参数渲染组件
  render(<Banner close={mockClose} text={testText} />);

  // 可选补充校验逻辑,验证参数正常生效
  // 校验文本正常渲染
  expect(screen.getByText(testText)).toBeInTheDocument();
  // 校验点击关闭按钮可触发close回调
  fireEvent.click(screen.getByText('[x]'));
  expect(mockClose).toHaveBeenCalledTimes(1);
})
其他语法问题提示

你目前贴出的业务代码还存在多处语法错误,不修正的话无法正常运行:

  • Banner.tsx中Properties类型定义缺少闭合的}
  • Banner.tsx中关闭按钮的onClick事件写在了span的文本内容区域,应改为<span className="popup" onClick={onClick}>[x]</span>
  • App.tsx没有导入useState,需要补充import React, { useState } from 'react';
  • App.tsx中toggleBanner方法里的SetIsOpen首字母大写错误,应和声明的变量一致为setIsOpen
  • App.tsx中Banner的close属性回调里的isOpen(false)写法错误,应改为setIsOpen(false)
  • App.tsx的return语句缺少闭合的},export default App要写在App函数的外部

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:45:02