Не удалось Jest-тестирование: следует использовать Material-UI для всех реагирующих компонентов.

Я работаю над проектом с использованием React, я использую 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;

Я ожидаю, что тест будет пройден!


person Muhammad Al-Shareef    schedule 22.05.2019    source источник
comment
Попробуйте также импортировать весь Ui материала в свои тестовые примеры. Также попробуйте проверить, отображается ли компонент, используя console.log (window.debug (story)) над строкой ожидания в тестовом примере.   -  person Hema Nandagopal    schedule 22.05.2019
comment
Спасибо @HemaNandagopal! Но никаких изменений после того, как я сделал то, что вы мне сказали: \   -  person Muhammad Al-Shareef    schedule 22.05.2019
comment
Что в нижнем колонтитуле?   -  person Ryan Cogswell    schedule 22.05.2019
comment
Я не думаю, что вы должны увидеть это сообщение, если что-то в Footer не использует компонент Material-UI. Основываясь на сообщении (которое, как я полагаю, существует только в версии 4, поэтому я предполагаю, что это то, что вы используете), я ожидал, что Footer использует Material-UI Button или что-то еще, что использует ButtonBase.   -  person Ryan Cogswell    schedule 22.05.2019
comment
О @RyanCogswell !! Вы правы, я использую Material UI в Footer, я это пропустил. У вас есть идеи, которые помогут решить эту проблему?   -  person Muhammad Al-Shareef    schedule 23.05.2019
comment
Я предполагаю, что вы используете бета-версию v4. Я думаю, что если вы обновитесь до rc.0 (выпущенного на этой неделе), это должно быть исправлено.   -  person Ryan Cogswell    schedule 23.05.2019
comment
На самом деле спасибо за это отличное решение, я только что попробовал это перед вашим комментарием, это решило проблему: D   -  person Muhammad Al-Shareef    schedule 23.05.2019


Ответы (1)


Проблема была в версии пакета UI материала. Я использовал v4.0.0-beta.2, но теперь я обновил его до v4.0.0-rc.0, и это решило проблему, и все тесты прошли.

Еще одно замечание: я использовал пользовательский интерфейс материала в своем Footer компоненте. Таким образом, проблема будет показана в компоненте, в котором я использую компоненты пользовательского интерфейса материала.


Редактировать:

Выпущена новая версия: v4.0.1

person Muhammad Al-Shareef    schedule 22.05.2019