Как сделать снимок для тестирования компонента с вложенным компонентом? - PullRequest
2 голосов
/ 28 апреля 2019

Я тестирую компонент с вложенным компонентом, внутри которого используется избыточность. Я использую мелкий тест для компонента. Это мой тест:

describe("Header", () =>
  void it("renders correctly", () => {
    const renderer = new ShallowRenderer()
    const tree = renderer.render(<Header />)
    expect(tree).toMatchSnapshot();
  })

Вывод снимка:

exports[`Header renders correctly 1`] = `
<mockConstructor
  render={[Function]}
/>
`;

Это правильно? Разве снимок не должен показывать мой компонент?

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

Попробуйте использовать shallow из пакета enzyme:

import { shallow } from 'enzyme';
import Header from './Header';

describe('Header', () => {
  it('should render', () => {
    const wrapper = shallow(<Header />);
    expect(wrapper).toMatchSnapshot();
  });
});
0 голосов
/ 28 апреля 2019

Я изменил свой код, как вы говорите, и вывод снимка для вашего фрагмента:

exports[`Header renders correctly 1`] = `ShallowWrapper {}`;

Поиск информации об этом выводе я нашел Jest / Enzyme ShallowWrapper пуст при создании снимка В основном я должен использовать энзим-json, поэтому я изменил свой код на:

import { shallow } from 'enzyme';
import toJson from 'enzyme-to-json';
...

describe("Header", () =>
  void it("renders correctly", () => {
    const tree = shallow(<Header />)
    expect(toJson(tree)).toMatchSnapshot()
  })
)

На сайте github для enzyme-to-json есть пример, который показывает в качестве моего теста

import React, {Component} from 'react';
import {shallow} from 'enzyme';
import toJson from 'enzyme-to-json';

it('renders correctly', () => {
  const wrapper = shallow(
    <MyComponent className="my-component">
      <strong>Hello World!</strong>
    </MyComponent>
  );

  expect(toJson(wrapper)).toMatchSnapshot();
});

Но снимок:

exports[`Header renders correctly 1`] = `
<mockConstructor
  render={[Function]}
/>
`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...