Got TypeError: expect(...).toBeInTheDocument is not a function even after proper setup

Got TypeError: expect(...).toBeInTheDocument is not a function even after proper setup

我使用 Create React App 并已在 src/setupTests.js 上声明:

import '@testing-library/jest-dom';
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
configure({ adapter: new Adapter() });

但是每次我在测试文件上使用 expect(anything).toBeInTheDocument() 时,当 运行 测试时我得到:

TypeError: expect(...).toBeInTheDocument is not a function

为了确保 setupTests.js 实际上是 运行,我尝试在测试文件上使用 enzyme shallow 并且它有效。那么jest-dom到底有什么问题,如何解决呢?

解决方法:

import '@testing-library/jest-dom/extend-expect';

在 src/setupTests.js

在您的jest.config.js

中添加更容易
module.exports = {
  ...,
  "setupFilesAfterEnv": [
    "<rootDir>/jest.setup.js"
  ]
}

并使用内容

创建jest.setup.js
import '@testing-library/jest-dom'

这样您就不必在每个测试文件中导入笑话-dom