我需要使用 Jest 和 TypeScript 模拟以下 useState 挂钩:
const [myState, setMyState] = useState<MyType>(MyType.TYPE_0)
在我的测试中,为了嘲笑它,我写的是:
import * as React from 'react'
const setState = jest.fn();
const useStateSpy = jest.spyOn(React, 'useState');
useStateSpy.mockImplementation((init: MyType) => [init = MyType.TYPE_1, setState]);
但是,由于我使用的是 TypeScript,它会抱怨我没有指定我的间谍的类型。
Argument of type '(init: MyType) => (MyType | jest.Mock<any, any>)[]' is not assignable to parameter of type '() => [unknown, Dispatch<unknown>]'
我尝试了不同的方法,但我无法正确输入我的模拟。
如何指定
setState
和useStateSpy
的类型?
用某个值初始化该值
import * as React from 'react'
const setState = jest.fn();
const useStateSpy = jest.spyOn(React, 'useState');
useStateSpy.mockImplementation((init: MyType = **'Initial value'**) => [init = MyType.TYPE_1, setState]);
or
useStateSpy.mockImplementation((init?: MyType) => [init = MyType.TYPE_1, setState]);
谢谢你!!!帮助我做到了这一点: vi.spyOn(reactHooks, 'useState').mockImplementation((state? : string) => [state, setData]);