【发布时间】:2022-06-28 23:13:26
【问题描述】:
如您所知,typeorm 查找选项,特别是 findAndCount,有一个 where 选项,它采用查询构建器,您可以在 docs 中看到。使用它的查询构建器创建自定义查询真的很容易,但是对其进行测试和模拟,这是我不知道该怎么做的事情。所以这就是我使用它的方式:
const options: FindManyOptions<UserEntity> = {
join: {
alias: 'User',
innerJoinAndSelect: {
userLogin: 'User.userLogin',
payment: 'User.payment',
},
},
where: (queryBuilder: SelectQueryBuilder<UserEntity>) => {
queryBuilder.andWhere(`${queryBuilder.alias}.isManual = 1`);
if (!filters) {
return;
}
if (filters.id) {
queryBuilder.andWhere(`${queryBuilder.alias}.id = :id`, { id: filters.id });
}
if (filters.userId) {
queryBuilder.andWhere(`${queryBuilder.alias}.userId = :userId`, { userId: filters.userId });
}
},
skip: paginationDto.skip,
take: paginationDto.size,
};
options.order = { createdAt: 'DESC' };
const [users, total] = await this._transactionOnlineRepository.findAndCount(options);
这就是我试图模拟它的方式:
Const fakeQueryBuilder= {
join: jest.fn().mockReturnThis(),
where: (p)=> p.whereFactory(<SelectQueryBuilder<UserEntity>>{
andWhere: jest.fn().mockReturnThis();
})}
const fakeUserRepo = {
findAndCount : jest.fn(()=>fakeQueryBuilder)
};
你知道如何模拟这个或如何检查我的过滤器是否被应用?
【问题讨论】:
标签: typescript unit-testing jestjs nestjs typeorm