Я использую энзимный метод монтирования для тестирования моего компонента.
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);
});
});
Я пытался вызвать метод setProps
непосредственно для компонента, который не сообщил об ошибке, он также не установил реквизиты.Вот скриншот.