【问题标题】:How to mock a css import for jest/enzyme test?如何模拟用于开玩笑/酶测试的 CSS 导入?
【发布时间】:2018-07-28 05:58:31
【问题描述】:

我需要在我的 jest/enzyme 测试中模拟一个导入的 CSS 文件:

Header.test.js

import React from 'react'
import { shallow } from 'enzyme'
import { Header } from './Header'

jest.mock('semantic-ui-css/semantic.min.css') // <-- no effect...

it('should render page title', () => {
  const wrapper = shallow(<Header title='Test' />)
  expect(wrapper.find('title').text()).toEqual('Test')
})

我确实收到了import 'semantic-ui-css/semantic.min.css' 行的错误:

Test suite failed to run

    /Users/node_modules/semantic-ui-css/semantic.min.css:11
    @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic&subset=latin);/*!
    ^

    SyntaxError: Invalid or unexpected token

我不需要为测试导入 css 文件。因此,我想模拟该导入以进行测试。我该怎么做?

我尝试过jest.mock('semantic-ui-css/semantic.min.css'),但这不起作用。

这是 Header.js 的样子:

Header.js

import Head from 'next/head'
import 'semantic-ui-css/semantic.min.css'

export const Header = props => {
  return (
    <Head>
      <meta http-equiv='content-type' content='text/html;charset=UTF-8' />
      <meta charset='utf-8' />
      <title>{props.title}</title>
      <link rel='icon' href='/static/favicon.ico' />
      <link rel='stylesheet' href='/_next/static/style.css' />
    </Head>
  )
}

【问题讨论】:

标签: javascript reactjs unit-testing jestjs enzyme


【解决方案1】:

在您的 jest 配置中使用 ignore-styles 包。

npm install --save-dev ignore-styles

在你的 jest.config.js 文件中包含这些行

import register from 'ignore-styles';
register(['.css', '.sass', '.scss']);

jest-css-modules 是您可以尝试的另一个包。

【讨论】:

  • jest.setup.js 文件是什么意思?我只有一个jest.config.js
猜你喜欢
  • 2021-06-16
  • 2020-05-27
  • 2021-04-27
  • 1970-01-01
  • 2019-10-26
  • 2017-11-19
  • 2023-03-27
  • 2018-03-31
  • 2018-07-22
相关资源
最近更新 更多