如果我测试 useState 模拟,我也应该模拟 useEffect 吗?

时间:2021-06-23 10:50:31

标签: javascript reactjs testing jestjs

我测试了在鼠标进入和鼠标离开时检查 useState 调用

    test('should update state on mouse enter and mouse leave', () => {
      const setStateMock = jest.fn()
      const useStateSpy = jest.spyOn(React, 'useState') as jest.Mock
      useStateSpy.mockImplementation((init) => [init, setStateMock])

      point.simulate('mouseenter')
      expect(setStateMock).toBeCalledTimes(1)
      expect(setStateMock).toHaveBeenCalledWith(true)

      point.simulate('mouseleave')
      expect(setStateMock).toBeCalledTimes(2)
      expect(setStateMock).toHaveBeenCalledWith(false)
    })

我总是得到 TypeError: 无法读取未定义的属性 'length' for useEffect 或者有时写到钩子顺序已经改变。 useState 钩子的值也在 useEffect 依赖中。我应该模拟 useEffect 还是我有不同的错误?

0 个答案:

没有答案