首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.toHaveStyle-dom给出错误“Jest:expect(...)Jest is not a function”

.toHaveStyle-dom给出错误“Jest:expect(...)Jest is not a function”
EN

Stack Overflow用户
提问于 2020-11-24 22:19:28
回答 4查看 4.2K关注 0票数 2

我正在尝试使用jest-dom来测试组件的样式,但我遇到了错误:

代码语言:javascript
运行
复制
"TypeError: expect(...).toHaveStyle is not a function"

我的组件是一个带有样式组件的简单链接:

代码语言:javascript
运行
复制
import styled from 'styled-components'

export const Link = styled.a`
  color: #fff;
`

在我的测试中,我做的是:

代码语言:javascript
运行
复制
describe('Link', () => {
  it('should display color on the link', () => {
    render(<Link href="/x">Test</Link>)
  }

  expect(screen.getByRole('link', { name: /test/i })).toHaveStyle({ color: '#fff' })
}

我用以下命令创建了一个设置文件(jest.config.js):

代码语言:javascript
运行
复制
module.exports = {
  setupFilesAfterEnv: ['<rootDir>/.jest/setup.js'],
}

在项目的根目录中,我创建了.jest / setup.js文件并导入了js-dom:

代码语言:javascript
运行
复制
import '@testing-library/jest-dom'
EN

回答 4

Stack Overflow用户

发布于 2020-11-25 16:30:08

您可以尝试这样做:

代码语言:javascript
运行
复制
import { toHaveStyle } from '@testing-library/jest-dom'
expect.extend({ toHaveStyle })

这对我很管用。

票数 2
EN

Stack Overflow用户

发布于 2020-11-25 11:42:25

@testing-library/dom v5.0.0开始,compare/v4.2.4...v5.0.0有一些突破性的变化

在v5.0.0之前,您应该使用import '@testing-library/jest-dom/extend-expect';

从v5.0.0开始,您应该使用import '@testing-library/jest-dom';

您未正确添加expect的匹配器。这就是你得到错误的原因。

票数 1
EN

Stack Overflow用户

发布于 2021-03-23 10:49:52

在您的软件包中使用以下版本:

代码语言:javascript
运行
复制
"dependencies": {
 "@types/styled-components": "5.9.1",
 "styled-components": "^5.2.0"

},

并将此包导入到测试文件中:

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

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

https://stackoverflow.com/questions/64988386

复制
相关文章

相似问题

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