如何使用Typescript正确地强制转换模拟函数

如何使用Typescript正确地强制转换模拟函数,typescript,jestjs,mocking,Typescript,Jestjs,Mocking,我试图模拟一个函数并使用Typescript的优点,但我找不到最好的方法。在一点上下文中,我想测试一个使用KeyClope实例的类。 情况就是这样: 从“keydove js”导入keydove; 从“/Auth”导入{Auth}; 笑话:mock('keydape-js'); const keydovemock=keydove as jest.MockedFunction; ... //这就是我想要使用它的原因,因为TS自动完成方法并帮助我。 mockImplementation(()=>({

我试图模拟一个函数并使用Typescript的优点,但我找不到最好的方法。在一点上下文中,我想测试一个使用KeyClope实例的类。 情况就是这样:

从“keydove js”导入keydove;
从“/Auth”导入{Auth};
笑话:mock('keydape-js');
const keydovemock=keydove as jest.MockedFunction;
...
//这就是我想要使用它的原因,因为TS自动完成方法并帮助我。
mockImplementation(()=>({init:jest.fn().mockResolvedValue(true)}));
//但是,TS编译器还说:
类型“{init:Mock;}”缺少以下属性 来自类型“keydapertinstance”:登录、注销、注册, 《会计管理》及其它11本。ts(2740)索引 预期类型来自此签名的返回类型

我做错了什么?因为我测试设置了一个
/@ts ignore
和测试通过,但是我不喜欢这个解决方案。另外,如果我像这样声明
keydovemock

constkeydovemock=keydove作为jest.Mock;
工作,但没有类型。。。我试图按照Jest关于MockedFunctions的指导,但我不知道如何解决它

我正在使用以下版本(如果这些版本在某种程度上有帮助?)

“@types/jest”:“^25.2.1”,
“笑话”:“^26.0.0”,
“ts笑话”:“^26.4.4”,
“类型脚本”:“~3.9.5”,
“密钥斗篷js”:“^11.0.2”