create-react-app项目未导入@testing-library/jest-dom为何可使用toBeInTheDocument
为何未手动导入@testing-library/jest-dom也能使用toBeInTheDocument断言
核心原因是create-react-app(CRA)的默认测试配置已经完成了相关依赖的预装和全局注入,具体分为两点:
- 你使用CRA初始化的项目,默认已经在
package.json中预装了@testing-library/jest-dom依赖,无需你额外手动安装。 - CRA默认的Jest测试配置会在所有测试用例执行前,自动加载项目根目录下
src文件夹里的setupTests.js(如果是TypeScript项目则为setupTests.ts)文件,该文件的默认代码就包含import '@testing-library/jest-dom'语句,导入后会将jest-dom提供的所有自定义断言(包括toBeInTheDocument)全局挂载到Jest的expect实例上,所有测试文件都可以直接调用,不需要单独在每个测试文件内重复导入。
另外补充一个你代码里的小问题:你当前写的expect(helloWorld).toBeInTheDocument没有加执行括号,实际上没有触发断言逻辑,测试不会报错但也不会校验你要判断的逻辑,正确的写法是expect(helloWorld).toBeInTheDocument()。
内容的提问来源于stack exchange,提问作者Eduardo Figueiredo
相关产品推荐
相关产品推荐

