首页 > 解决方案 > ts2339怎么解决?使用带有测试库/反应的打字稿

问题描述

我收到一条错误消息“属性 'toggled' 在类型 'HTMLElement'.ts(2339) 上不存在”

奇怪的是,我的测试用例都成功了。但是,在测试文件中,出现了关于 ts.2339 的错误消息。

我该怎么做才能解决这个问题?

component...
<Container data-testid={"list-element-toggle"} toggled={state[data.id - 1]}>.  * style.div``
  <Content data-testid={"list-element-content"} toggled={state[data.id - 1]}>. * style.div``
...

testing file...
expect(getAllByTestId("list-element-toggle")[0].toggled).toEqual(true);
expect(getAllByTestId("list-element-content")[0].toggled).toEqual(true);

标签: javascriptreactjs

解决方案


testing-library/react 没有检查组件的 props。可能你内部应该有一个Container基于Contentproptoggled的逻辑。

例如里面Content

export function Content({ toggled }) {
  return (
    <div>
    {toggled ? : <p>I am toggled</p> : null}
    </div>
  );
} 

然后在测试中:

import { render, screen } from '@testing-library/react';

render(<App />);
expect(screen.getByText("I am toggled")).toBeInTheDocument();

推荐阅读