Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 如何使用Jest模拟类并将其作为参数注入_Typescript_Jestjs - Fatal编程技术网

Typescript 如何使用Jest模拟类并将其作为参数注入

Typescript 如何使用Jest模拟类并将其作为参数注入,typescript,jestjs,Typescript,Jestjs,我试图从typeorm中模拟QueryBuilder类,因为我有一个函数,它接受QueryBuilder类作为参数。因此,我编写了如下代码来模拟QueryBuilder const mockRepository = jest.fn<QueryBuilder<User>, []>(() => ({ select: jest.fn().mockReturnThis(), where: jest.fn().mockReturnThis(), lim

我试图从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,
    ),
}))

_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>))