首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >属性'toBeInTheDocument‘在'Matchers<any>’类型上不存在

属性'toBeInTheDocument‘在'Matchers<any>’类型上不存在
EN

Stack Overflow用户
提问于 2019-09-09 21:05:39
回答 15查看 70.5K关注 0票数 91

我正在尝试为我的简单React编写测试,该应用程序使用API等为养狗所创建一个UI。

代码语言:javascript
复制
npm install jest-dom react-testing-library --save-dev

但是,我得到了以红色下划线的toBeInTheDocument();方法和错误消息

代码语言:javascript
复制
"Property 'toBeInTheDocument' does not exist on type 'Matchers<any>'."
代码语言:javascript
复制
import "react-testing-library/cleanup-after-each";
import "jest-dom/extend-expect";

import * as React from "react";
import PetCard from "./PetCard";
import Pet from "./Pet";
import { render } from "react-testing-library";

const petMock = {
  id: "225c5957d7f450baec75a67ede427e9",
  name: "Fido",
  status: "available",
  kind: "dog",
  breed: "Labrador",
} as Pet;

describe("PetCard", () => {
  it("should render the name", () => {
    const { getByText } = render(<PetCard pet={petMock} />);
    expect(getByText("Fido")).toBeInTheDocument();
  });

});

任何关于我如何解决这个问题的建议都是非常感谢的。

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2020-01-17 09:35:38

请确保项目中安装了正确的类型。即

npm i -D @testing-library/jest-dom@^4.2.4

根据我的经验,5.x版似乎缺少类型类型

票数 62
EN

Stack Overflow用户

发布于 2020-05-06 13:12:02

这里的大多数答案似乎主要是关于巴别的。使用其他任何东西,如eslint、tslint等和纯类型文本,都足以将@testing-library/jest-dom添加到您的类型中。

因此,几个简单的步骤:

确保安装了库:

代码语言:javascript
复制
yarn add -D @testing-library/jest-dom

代码语言:javascript
复制
npm i @testing-library/jest-dom --save-dev

然后将其链接到您的tsconfig.json中

代码语言:javascript
复制
"types": ["node", "jest", "@testing-library/jest-dom"],

现在我们处理Jest配置。与其在每个测试文件中导入它,不如在Jest配置文件中导入它(通常称为jest.config.js):

代码语言:javascript
复制
setupFilesAfterEnv: [
   "<rootDir>/support/setupTests.js"
],

然后在文件setupTests.js

代码语言:javascript
复制
import '@testing-library/jest-dom/extend-expect'

如果使用纯require()或不同的配置,也可以使用JavaScript。

另一种选择(对于TypeScript,或者如果您不喜欢添加setupTests.js)是添加globals.d.ts (在我的例子中是项目根目录),并在那里添加上面的行(import ...)。

Note:这两种解决方案都可以在没有设置esModuleInterop的情况下工作。

票数 118
EN

Stack Overflow用户

发布于 2020-04-25 09:50:23

埃斯林特重写没有帮助,但是

代码语言:javascript
复制
import '@testing-library/jest-dom/extend-expect'

在乞求的时候,测试文件解决了它。

我在这里的官方反应启动程序上找到了这个答案,也是在开玩笑的文件上找到的。希望能帮上忙。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57861187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档