【发布时间】:2021-07-25 23:37:12
【问题描述】:
我正在尝试从 typeorm 模拟 QueryBuilder 类,因为我有一个函数将 Querybuilder 类作为参数。所以我写了一个类似下面的代码来模拟 QueryBuilder
const mockRepository = jest.fn<QueryBuilder<User>, []>(() => ({
select: jest.fn().mockReturnThis(),
where: jest.fn().mockReturnThis(),
limit: jest.fn().mockReturnThis(),
getManyAndCount: jest.fn().mockReturnValueOnce(
items,
),
}))
它抱怨说我不仅应该模拟 QueryBuilder 的四个方法,还应该模拟 QueryBuilder 类中存在的其他 38 个方法。我显然不想模拟每一个方法,所以我尝试使用 Partial 来克服它,如下所示
const mockRepository = jest.fn<Partial<QueryBuilder<User>>, []>(() => ({
select: jest.fn().mockReturnThis(),
where: jest.fn().mockReturnThis(),
limit: jest.fn().mockReturnThis(),
getManyAndCount: jest.fn().mockReturnValueOnce(
items,
),
}))
现在错误消失了,但是我想将依赖注入作为参数的函数导致问题。
service._buildQueryForQueryBuilder(mockRepository);
_buildQueryForQueryBuilder 的参数采用 QueryBuilder 类型,现在它抱怨应该实现其他 38 个 QueryBuilder 方法。如何只模拟我选择的几个函数,并且仍然提供正确的类型作为我要单元测试的函数的参数?
【问题讨论】:
标签: typescript jestjs