这是resolverNestJs中的一个示例,我将为此文件编写测试。但是nestjs文档中没有用于测试解析器的文档。我已经为自己准备了一个测试service,但是解析器内部可能也没有什么逻辑,因此最好也为他们进行测试。如何测试resolver文件?import { ObjectId } from 'mongodb';import { AuthGuard } from '../utils/Auth.guards';import { UseGuards } from '@nestjs/common';import { IUser } from '../users/users.service';import { User } from '../utils/user.decorator';import { Query, Resolver, Mutation, Args } from '@nestjs/graphql';import { AccessService } from './access.service';import { NeedAccess } from '../utils/needAccess.decorator';import { HasAccess } from '../utils/access.decorator';@Resolver('Accesss')@UseGuards(AuthGuard)export class AccessResolvers { constructor(private readonly accessService: AccessService) {} @Query() @NeedAccess() access( @Args('userId') userId: ObjectId, @User() user: IUser, @HasAccess(['access.view']) hasAccess, ) { if (userId && hasAccess) { // this might be a situation to concern about in tests return this.accessService.getUserAccess(userId); } else { return this.accessService.getUserAccess(user._id); } }}
1 回答
MMMHUHU
TA贡献1834条经验 获得超8个赞
单元测试和e2e测试之间存在根本的区别。在单元测试中,您要测试单个隔离单元的每个极端情况,而在e2e测试中,您要测试单元之间的交互。两者都很重要,请参阅此答案以获取更详细的区别。
编写单元测试时,通常会模拟单元的所有依赖关系。在你的情况下AccessResolvers
的AccessService
,然后你测试每一个公共方法。有关如何使用模拟的详细示例,请参见以下答案(解析器没有区别)。
添加回答
举报
0/150
提交
取消