首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@jest library/jest-dom未加载

@jest library/jest-dom未加载
EN

Stack Overflow用户
提问于 2020-05-17 22:17:22
回答 2查看 2.9K关注 0票数 5

我正在尝试将React Testing Library引入到Create React App项目中,我遇到了一个奇怪的问题。对于我的一个测试,我需要使用jest-dom,但是我似乎不能成功地导入它。

我已经yarn add了它,想不起来我错过了什么步骤。expect.extend失败了,因为它的toHaveStyle未定义。

下面是我的测试文件,缩小到最小:

代码语言:javascript
复制
import React from 'react';
import {render, screen} from '@testing-library/react';

import {toHaveStyle} from '@testing-library/jest-dom';
import '@testing-library/jest-dom/extend-expect';
//expect.extend({toHaveStyle});

it('is confusing me', () => {
  // (Using `toBe(42) as an ersatz `console.log`)
  expect([Object.keys(require('@testing-library/jest-dom')), Object.keys(require('@testing-library/react')), toHaveClass]).toBe(42);
});

输出为:

代码语言:javascript
复制
  Expected: 42
    Received: [[], ["render", "cleanup", "fireEvent", ...], undefined]

下面是yarn.lock的相关部分:

代码语言:javascript
复制
"@testing-library/jest-dom@^5.7.0":
  version "5.7.0"
  resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.7.0.tgz#b2e2acb4c088a293d52ba2cd1674b526282a2f87"
  integrity sha512-ZV0OtBXmTDEDxrIbqJXiOcXCZ6aIMpmDlmfHj0hGNsSuQ/nX0qPAs9HWmCzXvPfTrhufTiH2nJLvDJu/LgHzwQ==
  dependencies:
    "@babel/runtime" "^7.9.2"
    "@types/testing-library__jest-dom" "^5.0.2"
    chalk "^3.0.0"
    css "^2.2.4"
    css.escape "^1.5.1"
    jest-diff "^25.1.0"
    jest-matcher-utils "^25.1.0"
    lodash "^4.17.15"
    redent "^3.0.0"

"@testing-library/react@^10.0.4":
  version "10.0.4"
  resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.0.4.tgz#8e0e299cd91acc626d81ed8489fdc13df864c31d"
  integrity sha512-2e1B5debfuiIGbvUuiSXybskuh7ZTVJDDvG/IxlzLOY9Co/mKFj9hIklAe2nGZYcOUxFaiqWrRZ9vCVGzJfRlQ==
  dependencies:
    "@babel/runtime" "^7.9.6"
    "@testing-library/dom" "^7.2.2"
    "@types/testing-library__react" "^10.0.1"
EN

回答 2

Stack Overflow用户

发布于 2020-05-17 22:38:37

下面是我如何使用这个伟大的库:

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

[...]

// then matchers are available in tests
expect(rtl.getByText('text').toHaveClass('some-class');

我的进口与你的略有不同,我不能准确地说出你的进口出了什么问题,但我是这样做的。

祝你好运!

票数 1
EN

Stack Overflow用户

发布于 2020-10-30 00:02:18

好了,jest-dom文档已经更新了。

代码语言:javascript
复制
import {toHaveStyle} from '@testing-library/jest-dom';

将不再起作用。相反,

代码语言:javascript
复制
import {toHaveStyle} from '@testing-library/jest-dom/matchers'

有关参考信息,请参阅jest-dom

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

https://stackoverflow.com/questions/61853262

复制
相关文章

相似问题

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