Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何解决ts2339?将typescript与测试库/react一起使用_Javascript_Reactjs - Fatal编程技术网

Javascript 如何解决ts2339?将typescript与测试库/react一起使用

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

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

奇怪的是,我的测试用例都成功了。 但是,在测试文件中,出现了关于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);
组件。。。
.  * style.div``
. * style.div``
...
测试文件。。。
expect(getAllByTestId(“列表元素切换”)[0]。toggled)。toEqual(true);
expect(getAllByTestId(“列表元素内容”)[0]。已切换)。toEqual(true);
  • 我想这是为什么切换有其他HTMLDOM元素的原因。 所以,我遇到了这个麻烦

测试库/react未检查组件的道具。 您可能应该在
容器
内容
中有一个基于
切换的
属性的逻辑

例如,在
内容中

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项的类型。但为什么还要测试道具的价值、实现,而不是道具设置所导致的行为?