Я пишу приложение React и хочу проверить, правильно ли мой компонент извлекает данные;используя Jest и Enzyme.Я хочу вызвать поддельную функцию из другой функции, которую я проверяю в своем тесте шутки:
const axios = jest.mock('axios', () => {
const mockData = {
schools: [
{
id: 4,
title: 'ABC',
company: {
id: 41,
distance: '0.6 KM AWAY',
logo: 'https://abc.xyz.jpg',
},
fee: 'NA',
type: 'public',
gender: 'Mixed',
},
],
};
return {
get: jest.fn(() => Promise.resolve(mockData)),
};
});
jest.fn('getData', () => {
axios.get();
});
const props = {
searchResult: {
payload: [],
isLoading: false,
error: {},
searchString: '',
},
getData: jest.fn(axios.get()),
};
it('fetch search data on click', () => {
const search = shallow(<SearchComponent {...props} />);
search
.props()
.getData()
.then(() => {
expect(axios.get).toHaveBeenCalled();
expect(axios.get).toHaveBeenCalledWith('data.json');
expect(search.exists('search-result-card')).toBe(true);
});
});
Код компонента (только важные части, невозможно вставить весь код, поскольку он слишком большой):
export class SearchResultComponent extends React.PureComponent {
render() {
const { searchResult, getData } = this.props;
<SearchInput
placeholder="Enter keyword..."
onClick={searchString => getData(searchString)}
/>
}
}
Когда я запускаю тест, я получаю эту ошибку:
TypeError: axios.get is not a function
Что здесь не так, и как я могу это исправить?