Как использовать setProps с компонентом, смонтированным с ThemeProvider - PullRequest
0 голосов
/ 20 декабря 2018

Я использую энзимный метод монтирования для тестирования моего компонента.

export const mountWithTheme = (children, options) => (
  mount(<ThemeProvider theme={theme}>{children}</ThemeProvider>, options)
);

Для некоторых тестовых случаев мне нужны реквизиты, но setProps мне не показалось.Я не могу использовать мелководье, так как я выполняю некоторую деятельность, которая зависит от DOM, и для этого мне нужно визуализировать мой компонент.

Вот мой тестовый пример, похожий на код ошибки чуть ниже.

import React from 'react';
import { SearchResult } from './SearchResultTable';
import { mountWithTheme } from '../../helper';


describe('<SearchResultTable />', () => {
  let component;
  beforeEach(() => {
    component = mountWithTheme(
      <SearchResult />,
    );
    Element.prototype.getBoundingClientRect = jest.fn(() => ({
      width: 120,
      height: 120,
      top: 0,
      left: 0,
      bottom: 0,
      right: 0,
    }));
  });

  it('should render grid if product data is available', () => {
    const searchResult = {
      name: 'test',
    };
    component.find(SearchResult).setProps({
      searchResult,
    });

    const instance = component.find(SearchResult).instance();
    expect(instance.renderRow(0)).toEqual(searchResult);
  });
});

enter image description here

Я пытался вызвать метод setProps непосредственно для компонента, который не сообщил об ошибке, он также не установил реквизиты.Вот скриншот.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...