Jest 测试失败:应该对所有 React 组件使用 Material-UI

Jest testing fails: Should use Material-UI for all react components

我正在使用 React 开发一个项目,我使用 Material-UI 只是为了包含表单的组件。当我 运行 测试时,带有表单的组件(使用 material UI)成功通过,但问题在于其中没有表单的组件,因此它没有使用任何 material ui 个组件,测试失败!

当我 运行 测试时,它没有通过这些组件并显示:

  ● Natural

    Material-UI: expected an Element but found null. Please check your console for additional warnings and try fixing those. If the error persists please file an issue.

       5 | 
       6 | test('Natural', () => {
    >  7 |   const story = renderer.create(<BrowserRouter> <Story /> </BrowserRouter>).toJSON();
         |                          ^
       8 |   expect(story).toMatchSnapshot();
       9 | });
      10 | 

这是我的测试代码:

import React from 'react';
import renderer from 'react-test-renderer';
import { BrowserRouter } from 'react-router-dom';
import Story from './index';

test('Natural', () => {
  const story = renderer.create(<BrowserRouter> <Story /> </BrowserRouter>).toJSON();
  expect(story).toMatchSnapshot();
});

这是我的组件代码:

import React, { Fragment } from 'react';
import Footer from '../Common/Footer';

const Story = () => {
  return (
    <Fragment>
      <main>
        <h1>Hello Story page!</h1>
      </main>
      <Footer />
    </Fragment>
  );
};

export default Story;

期待考试通过!

问题出在 Material UI 包的版本上。我使用的是 v4.0.0-beta.2,但现在我已将其更新为 v4.0.0-rc.0,这解决了问题并且所有测试都通过了。

另一个注意事项,我在我的 Footer 组件上使用了 material ui。所以这个问题会显示在我用MaterialUI组件的组件上就可以了。


编辑:

新版本发布:v4.0.1