Lef*_*eff 7 reactjs jestjs react-hooks
我有一个几乎没有 useState 钩子的组件:
const [resizing, setResizing] = React.useState(false);
const [x, setX] = React.useState(0);
const [y, setY] = React.useState(0);
在某些地方,我一次调用多个钩子,例如在这里onResize,我同时调用setResizing和setX或setY钩子:
<ResizableBox
    height={520}
    width={370}
    minConstraints={[370, 520]}
    maxConstraints={[Infinity, Infinity]}
    className={classes.resizable}
    onResize={(e) => {
      if (e.movementX !== 0) {
        setResizing(true);
        setX((prev) => prev + e.movementX);
      } else if (e.movementY !== 0) {
        setResizing(true);
        setY((prev) => prev + e.movementY / 2);
      }
    }}
    onResizeStop={() => {
      setResizing(false);
    }}
  >
我习惯于测试可以轻松测试状态更改的类组件。
我想用这样的东西来测试它:
const setXSpy = jest.spyOn(React, 'setX');
const setYSpy = jest.spyOn(React, 'setY');
const setResizeSpy = jest.spyOn(React, 'setResize');
it('calls useState hooks correctly', () => {
  resizableBox.props.onResize({movementX: 1});
  expect(setXSpy).toHaveBeenCalledWith(1);
  expect(setYSpy).not.toHaveBeenCalled();
  expect(setResizeSpy).toHaveBeenCalledWith(true);
});
但是,我不确定在这个例子中如何测试这样的钩子?
| 归档时间: | 
 | 
| 查看次数: | 1736 次 | 
| 最近记录: |