模拟“不可分配给类型为'() => [未知,Dispatch<unknown>]'”的参数

问题描述 投票:0回答:2

我需要使用 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
的类型?

reactjs typescript jestjs
2个回答
1
投票

用某个值初始化该值

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]);

0
投票

谢谢你!!!帮助我做到了这一点: vi.spyOn(reactHooks, 'useState').mockImplementation((state? : string) => [state, setData]);

© www.soinside.com 2019 - 2024. All rights reserved.