Javascript 如何使用Jest对getRepository进行单元测试?

Javascript 如何使用Jest对getRepository进行单元测试?,javascript,typescript,testing,jestjs,typeorm,Javascript,Typescript,Testing,Jestjs,Typeorm,我将typescript与typeorm一起使用,我有一个类似于以下内容的存储库: 从'typeorm'导入{EntityRepository,getRepository,createQueryBuilder}; @实体位置() 导出默认类回购{ 异步getSomething():承诺{ const schemaQuery=getRepository(SomeModel) .createQueryBuilder(“sm”) .选择(…) .其中(…); ..... 我的测试文件是这样的 imp

我将typescript与typeorm一起使用,我有一个类似于以下内容的存储库:

从'typeorm'导入{EntityRepository,getRepository,createQueryBuilder};
@实体位置()
导出默认类回购{
异步getSomething():承诺{
const schemaQuery=getRepository(SomeModel)
.createQueryBuilder(“sm”)
.选择(…)
.其中(…);
.....
我的测试文件是这样的

import*作为“typeorm”中的typeorm;
从“../../../../src/repositories/Repo”导入Repo;
描述(
"测试",,
() => {
让回购:回购;
在每个之前(()=>{
回购=新回购();
});
测试('getSomething works',async()=>{
spyOn(typeorm,'getRepository').mockImplementation(()=>({//typescript希望我实现getRepository的所有属性,而我不需要这些属性
createQueryBuilder:jest.fn(),
}));
...
});
},
);

如何直接从仍符合typescript类型检查的typeorm模拟getRepository?

我刚刚遇到这个问题,实际上我使用了您的代码作为解决方案的基础。请尝试以下操作:

jest.spyOn(typeorm,“getRepository”).mock实现(()=>{
const original=开玩笑的要求(“打字形式”);
//您需要查询生成器中使用的所有函数
返回{
起初的
createQueryBuilder:jest.fn().mockImplementation(()=>({
子查询:jest.fn().mockReturnThis()为未知,
from:jest.fn().mockReturnThis()为未知,
其中:jest.fn().mockReturnThis()为未知,
选择:jest.fn().mockReturnThis()作为未知,
getQuery:jest.fn().mockReturnThis()为未知,
setParameter:jest.fn().mockReturnThis()未知,
getMany:开玩笑
.fn()
.mockResolvedValue(预期)为未知,
})),
};
});

我有类似的问题要测试自定义存储库,谢谢,这是一种方法。