Javascript React testing library-TypeError:expect(…)。toHaveTextContent不是函数
我遵循一个简单的教程来学习react测试库 我有一个简单的组件,如:Javascript React testing library-TypeError:expect(…)。toHaveTextContent不是函数,javascript,reactjs,jestjs,react-testing-library,Javascript,Reactjs,Jestjs,React Testing Library,我遵循一个简单的教程来学习react测试库 我有一个简单的组件,如: import React, {useState} from 'react'; const TestElements = () => { const [counter, setCounter] = useState(0) return( <> <h1 data-testid="counter" >{ counter }</h1>
import React, {useState} from 'react';
const TestElements = () => {
const [counter, setCounter] = useState(0)
return(
<>
<h1 data-testid="counter" >{ counter }</h1>
<button data-testid="button-up" onClick={() => setCounter(counter + 1)}>Up</button>
<button data-testid="button-down" onClick={() => setCounter(counter - 1)}>Down</button>
</>
)
}
export default TestElements
我正在使用CreateReact应用程序,package.json
显示:
"@testing-library/jest-dom": "^4.2.4",
我还需要加上笑话吗?我想你在关注你在另一个问题中提到的内容
为了解决您的问题,您需要通过在测试文件中导入“@testing library/jest dom/extend expect”
,从jest dom添加自定义jest匹配器。React测试库的中也提到了它
从“React”导入React;
从'@testing library/react'导入{render,cleanup};
导入“@testinglibrary/jest-dom/extend-expect”;
从“/TestElements”导入TestElements;
每次之后(清理);
...
编辑:我刚刚阅读了您问题下的评论,@jornsharpe似乎已经提到您需要导入
extend expect
,但我将此答案留在这里。您是否已导入Jest DOM的extend expect?请参见“@testing library/jest dom”:“^4.2.4”在使用create react APP时包含“
”。该依赖项包含在内,并应加载到src/setupTests.js中(假设您使用的是默认模板)。但是你做了什么改变,这在一个全新的CRA应用程序中是可复制的吗?教程是什么?这是本教程,所以我没有创建CreateReact应用程序,而是从教程中克隆了该应用程序-作为一个简单的检查,向测试代码添加正确的导入是否可以修复它?它在我自己的教程()中与CRA4组合的示例中运行良好,但repo缺少setupTests文件。
TypeError: expect(...).toHaveTextContent is not a function
"@testing-library/jest-dom": "^4.2.4",