gpt4 book ai didi

reactjs - 如何用 jasmine 和 enzyme 测试 React useEffect hooks

转载 作者:行者123 更新时间:2023-12-04 01:35:05 31 4
gpt4 key购买 nike

在测试我的组件时,我找不到如何调用我的 useEffect Hook 。

我尝试了几个类似的解决方案,但没有奏效: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);
});

最佳答案

关于文档,useEffect 应该在任何 Prop 更改时更新。

  1. 您可以使用其他 Prop 来记忆测试。
  2. 可以模拟使用效果。

 /* mocking useEffect */
useEffect = jest.spyOn(React, "useEffect");
mockUseEffect(); // 2 times
mockUseEffect(); //

const mockUseEffect = () => {
useEffect.mockImplementationOnce(f => f());
};

关于reactjs - 如何用 jasmine 和 enzyme 测试 React useEffect hooks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59848783/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com