Я новичок в шутках. Мой компонент выглядит так.
class ComponentToTest extends React.Component {
searchName = () => {
return axios.get(...)
}
render() {
return(
<Form onSubmit = {handleSubmit(save)}>
<SomeChildComponent searchName = { (searchTerm: string) => this.searchName(searchTerm)} />
</Form>
)
}
}
`ComponentToTest.test.js`
it('should call `handleSubmit` with `save`', () => {
const store = createStore((state) => state, { app: {} });
const onSave = jest.fn().mockReturnValue(() => {});
const props: any = { handleSubmit: onSave };
const tree = mount(
<Provider store = {store}>
<ComponentToTest {...props} />
</Provider>,
);
tree.find('button').simulate('submit');
expect(onSave).toHaveBeenCalled();
});
Я получаю сообщение об ошибке после выполнения этого теста. есть ли способ имитировать вызов searchName и вернуть обещание?
Вы забыли вызвать searchName в опоре. Это должен быть searchName = { (searchTerm: string) => this.searchName(searchTerm)}. Или еще лучше searchName = {this.searchName}





Поскольку вы используете axios, возможно, вы можете использовать
jests-mock-axiosдля имитации вызоваaxios.get! Документы полезны: npmjs.com/package/jest-mock-axios