Javascript 如何解决ts2339?将typescript与测试库/react一起使用
我收到一条错误消息“类型“HtmleElement.ts(2339)”上不存在属性“toggled” 奇怪的是,我的测试用例都成功了。 但是,在测试文件中,出现了关于ts.2339的错误消息 我该怎么解决这个问题Javascript 如何解决ts2339?将typescript与测试库/react一起使用,javascript,reactjs,Javascript,Reactjs,我收到一条错误消息“类型“HtmleElement.ts(2339)”上不存在属性“toggled” 奇怪的是,我的测试用例都成功了。 但是,在测试文件中,出现了关于ts.2339的错误消息 我该怎么解决这个问题 component... <Container data-testid={"list-element-toggle"} toggled={state[data.id - 1]}>. * style.div`` <Content data-te
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);
组件。。。
. * style.div``
. * style.div``
...
测试文件。。。
expect(getAllByTestId(“列表元素切换”)[0]。toggled)。toEqual(true);
expect(getAllByTestId(“列表元素内容”)[0]。已切换)。toEqual(true);
- 我想这是为什么切换有其他HTMLDOM元素的原因。 所以,我遇到了这个麻烦
容器
和内容
中有一个基于切换的属性的逻辑
例如,在内容中
:
export function Content({ toggled }) {
return (
<div>
{toggled ? : <p>I am toggled</p> : null}
</div>
);
}
导出函数内容({toggled}){
返回(
{toggled?:我被切换了:null}
);
}
然后在测试中:
import { render, screen } from '@testing-library/react';
render(<App />);
expect(screen.getByText("I am toggled")).toBeInTheDocument();
从'@testing library/react'导入{render,screen};
render();
expect(screen.getByText(“我被切换”).toBeInTheDocument();
我自己解决了问题
“toggle”有一个html dom元素。但是,我想开火,因为具体的按钮在另一个地方
我选择了用于测试的按钮,它解决了这个问题您需要更具体地了解调用getAllByTestId的结果中第0项的类型。但为什么还要测试道具的价值、实现,而不是道具设置所导致的行为?