我该如何修复这个单元测试?

How can I fix this Unit Test?

我对 .tsx 文件的单元测试还很陌生,目前我在测试这个文件时遇到了问题(如果格式不正确,我很抱歉)

//this is Banner.tsx

import React, {useCallback} from "react";
type Properties = {
    close: () => void;
   text: string;

const Banner: React.FC<Properties> = ({close, text}) => {
const onClick = useCallback(() => {
               close();},
               [close, text]);
return (
  <div className = "BannerBox">
       <div className = "banner">
      <span className = "popup"> onClick={onClick}[x]
      </span>
      {text}
      </div>
 </div>
 );
 };
export default Banner;


//this is App.tsx

import Banner from "./Components/Banner";
function App(): JSX.Element {

const [isOpen, setIsOpen]=useState(false);
  const toggleBanner = () => {
  SetIsOpen(!isOpen);
};

return (
<div>
  <input type = "button"
      value = "popup"
      onClick={toggleBanner}/>
      <p>hi</p>
      {isOpen && <Banner text = {"hello"} close={() => isOpen(false)}/>}
</div>
  export default App;

这是我目前所拥有的

//Banner.test.tsx
test("Check that all type Properties are being used", () => {
render(<Banner />);
})

出现此错误 ->“类型 {} 缺少类型 Banner 中的以下属性:关闭和文本”

"type {} is missing the following properties from type Banner: close and text"

仔细阅读此错误消息。

Banner 是功能组件。这意味着它是一个将其 props 作为对象的函数。它被输入为接收两个道具,closetext。这些道具是必须的。

但是您在测试中没有提供道具。由于 props 参数始终是一个对象,而你没有 props,那么 props 参数是一个空对象。

所以现在那个错误告诉你你的函数需要一个对象,但是你提供的那个缺少 closetext 道具。

您需要满足组件所需的道具。不管你是不是在测试中,那些类型的契约必须要完成。

这意味着你想要这样的东西:

//Banner.test.tsx
test("Check that all type Properties are being used", () => {
  render(<Banner text="Hello, World!" close={() => null} />);
})

此外,您的组件中还有几个语法错误。如果您 use proper indenting 告知您代码的结构,您的代码将更容易理解。