#react-native #jestjs
#реагировать-родной #jestjs
Вопрос:
я знаю, что мне нужно настроить свою функцию mockedShow, и это код:
export const mockedShow = jest.fn(); export const mockedHide = jest.fn(); jest.mock('react-native-toast-message', () =gt; { const RNToast = jest.requireActual('react-native-toast-message'); const React = require('react'); class Toast extends React.Component { static show = mockedShow; static hide = mockedHide; render() { return React.createElement('Toast', this.props, this.props.children); } } Toast.propTypes = RNToast.propTypes; return Toast; });
Вот как я его использовал:
useEffect(() =gt; { if (state.pinError) { console.log('Invalid PIN'); Toast.show({ type: 'error', text1: 'Invalid PIN', visibilityTime: 1500, topOffset: 25, onHide: () =gt; { console.log('Invalid PIN onHide'); dispatch(actions.setPinError(false)); setHasSetPin(false); setPin(0); }, }); } }, [state.pinError]);
когда я тестирую, я вижу журнал «Недопустимый PIN-код», но нет «Недопустимого PIN-кода», поэтому я подумал, что мой onHide не вызывается. На самом деле я тоже сделал это в своем тесте, но я все еще не вижу в журнале «Недопустимый PIN-код на шее».:
jest.advanceTimersByTime(1699);
Как мне изменить шутку mockedShow fn, чтобы запустить обратный вызов onHide из его аргумента?