如何修复.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
相关产品推荐
相关产品推荐

