Я тестирую компонент реагирования, который отображает другой компонент, который вызывает конечную точку, возвращает некоторые данные и отображается, и я хочу знать, как я могу смоделировать компонент, который вызывает конечную точку, и возвращать фиктивные данные для каждого теста
Это компонент, который я тестирую
class MetaSelect extends React.Component {
render() {
console.log('metaselect render', MetadataValues);
return (
<MetadataValues type={this.props.type}>
{({ items, isLoading }) => (
<>
{isLoading ? (
<Icon variant="loadingSpinner" size={36} />
) : (
<Select {...this.props} items={items} placeholder="Please select a value" />
)}
</>
)}
</MetadataValues>
);
}
}
MetaSelect.propTypes = {
type: PropTypes.string.isRequired
};
Я хочу смоделировать MetadataValues в моих тестах, это файл metadataValues.js
class MetadataValues extends React.Component {
state = {
items: [],
isLoading: true
};
componentDidMount() {
this.fetchData();
}
fetchData = async () => {
const items = await query(`....`);
this.setState({ items, isLoading: false });
};
render() {
return this.props.children({ items: this.state.items, isLoading: this.state.isLoading });
}
}
MetadataValues.propTypes = {
type: PropTypes.string.isRequired,
children: PropTypes.func.isRequired
};
Это мой файл metaSelect.test.js
jest.mock('../MetadataValues/MetadataValues');
describe.only('MetaSelect component', () => {
fit('Should display spinner when data isnt yet recieved', async () => {
MetadataValues.mockImplementation( ()=> { <div>Mock</div>});
const wrapper = mount(<MetaSelect type="EmployStatus"/>);
expect( wrapper.find('Icon').exists() ).toBeTruthy();
});
});
Я предполагаю, что мне нужно что-то добавить в MetadataValues.mockImplementation( )
, но я не уверен, что я должен добавить, чтобы правильно смоделировать компонент