【发布时间】:2020-05-07 23:13:21
【问题描述】:
我在测试我的组件时找不到如何调用我的 useEffect 挂钩。
我尝试了几种类似这样的解决方案,但都不起作用:https://reactjs.org/docs/test-utils.html#act
我的组件:
const mapDispatchToProps = (dispatch: IDispatch, ownProps: ITextAreaOwnProps): ITextAreaDispatchProps => ({
onMount: () => dispatch(addTextArea(ownProps.id)),
});
export const TextArea = (props) => {
React.useEffect(() => {
props.onMount();
}, []);
// more code... //
return (
<>
<TextareaTagName
{...props.additionalAttributes}
className={props.className}
/>
{props.children}
{getValidationLabel()}
</>
);
};
我的测试:
it('should call prop onMount on mount', () => {
const onMount = jasmine.createSpy('onMount');
mount(<TextArea id="textarea-id" onMount={onMount} />);
expect(onMount).toHaveBeenCalledTimes(1);
});
【问题讨论】:
-
您可以在上面添加另一个调用。
标签: reactjs testing jasmine react-hooks enzyme