Jest-dom 给出错误“TypeError:expect(...).toHaveStyle 不是函数”

Jul*_*lio 9 reactjs jestjs styled-components react-testing-library jest-dom

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

"TypeError: expect(...).toHaveStyle is not a function"
Run Code Online (Sandbox Code Playgroud)

我的组件是与样式组件的简单链接:

import styled from 'styled-components'

export const Link = styled.a`
  color: #fff;
`
Run Code Online (Sandbox Code Playgroud)

在我的测试中我正在做:

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' })
}
Run Code Online (Sandbox Code Playgroud)

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

module.exports = {
  setupFilesAfterEnv: ['<rootDir>/.jest/setup.js'],
}
Run Code Online (Sandbox Code Playgroud)

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

import '@testing-library/jest-dom'
Run Code Online (Sandbox Code Playgroud)

sli*_*wp2 8

@testing-library/domv5.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正确添加匹配器。这就是您收到错误的原因。