如何覆盖从打字稿中其他文件导入的功能?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何覆盖从打字稿中其他文件导入的功能?相关的知识,希望对你有一定的参考价值。
我在getPerson
文件中声明了一个名为msq.ts
的函数,在我的app.ts
文件中,我只想用新的实现替换它。
在我的msq.ts
文件中
export function getPerson(): Promise< name: string, id: number >
return new Promise((resolve, reject) =>
setTimeout(() =>
resolve( name: "manas", id: 2 );
, 5000);
)
在我的app.ts
文件中
import * as msq from "../msq";
msq.getPerson = function():Promise<name:string,id:number>
return Promise.resolve(name:"manas",id:2);
但是当我尝试替换功能时,这显示了以下错误
无法分配给getPerson,因为它是一个只读属性
答案
如果用对象文字包装它并覆盖该对象作为默认值,则可以覆盖该函数。
在msq.ts
文件中
function getPerson(): Promise< name: string, id: number >
return new Promise((resolve, reject) =>
setTimeout(() =>
resolve( name: "manas", id: 2 );
, 5000);
)
export default
getPerson
在app.ts
文件中
import msq from "../msq";
// now we can override the getPerson the way we want
msq.getPerson = function():Promise<name:string,id:number>
return Promise.resolve(name:"manas",id:2);
如果我们正在进行单元测试(使用笑话),那么我们可以轻松地使用jest.fn()
对其进行模拟
import user from "../user";
import msq from "../msq";
// now we can override the getPerson the way we want
msq.getPerson = jest.fn().mockResolvedValue( name: "manas", id: 2 );
it("user.getUserInfo must resolve the person with id 2",async()=>
const result = await user.getUserInfo();
expect(result).toEqual(name:"manas",id:2);
);
以上是关于如何覆盖从打字稿中其他文件导入的功能?的主要内容,如果未能解决你的问题,请参考以下文章