如何模拟用于玩笑/酶测试的 css 导入?

use*_*695 6 javascript unit-testing reactjs jestjs enzyme

我需要在我的笑话/酶测试中模拟一个导入的 CSS 文件:

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

我确实收到了该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
Run Code Online (Sandbox Code Playgroud)

我不需要为测试导入 css 文件。所以我想模拟该导入以进行测试。我怎样才能做到这一点?

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

这是 Header.js 的样子:

头文件.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>
  )
}
Run Code Online (Sandbox Code Playgroud)

Far*_*sir 3

在你的笑话配置中使用ignore-styles包。

npm install --save-dev ignore-styles
Run Code Online (Sandbox Code Playgroud)

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

import register from 'ignore-styles';
register(['.css', '.sass', '.scss']);
Run Code Online (Sandbox Code Playgroud)

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