Typescript 如何使用Jest模拟类并将其作为参数注入
我试图从typeorm中模拟QueryBuilder类,因为我有一个函数,它接受QueryBuilder类作为参数。因此,我编写了如下代码来模拟QueryBuilderTypescript 如何使用Jest模拟类并将其作为参数注入,typescript,jestjs,Typescript,Jestjs,我试图从typeorm中模拟QueryBuilder类,因为我有一个函数,它接受QueryBuilder类作为参数。因此,我编写了如下代码来模拟QueryBuilder const mockRepository = jest.fn<QueryBuilder<User>, []>(() => ({ select: jest.fn().mockReturnThis(), where: jest.fn().mockReturnThis(), lim
const mockRepository = jest.fn<QueryBuilder<User>, []>(() => ({
select: jest.fn().mockReturnThis(),
where: jest.fn().mockReturnThis(),
limit: jest.fn().mockReturnThis(),
getManyAndCount: jest.fn().mockReturnValueOnce(
items,
),
}))
_buildQueryForQueryBuilder的参数接受QueryBuilder类型,现在它抱怨QueryBuilder的其他38个方法也应该实现。我如何只模拟我选择的几个函数,并且仍然提供正确的类型作为我想要进行单元测试的函数的参数?如果您只是强制强制转换它,它还会抱怨吗
jest.fn<QueryBuilder<User>, []>(() => ({
select: jest.fn().mockReturnThis(),
where: jest.fn().mockReturnThis(),
limit: jest.fn().mockReturnThis(),
getManyAndCount: jest.fn().mockReturnValueOnce(
items,
),
} as QueryBuilder<User>))
jest.fn(()=>({
选择:jest.fn().mockReturnThis(),
其中:jest.fn().mockReturnThis(),
限制:jest.fn().mockReturnThis(),
getManyAndCount:jest.fn().mockReturnValueOnce(
项目,
),
}作为QueryBuilder)
您所描述的“强制强制转换”是一个类型断言。是的,它仍然抱怨。。。
service._buildQueryForQueryBuilder(mockRepository);
jest.fn<QueryBuilder<User>, []>(() => ({
select: jest.fn().mockReturnThis(),
where: jest.fn().mockReturnThis(),
limit: jest.fn().mockReturnThis(),
getManyAndCount: jest.fn().mockReturnValueOnce(
items,
),
} as QueryBuilder<User>))