这是 NestJs 中的 resolver
示例,我即将为此文件编写测试。但是nestjs文档中没有测试解析器的文档。
我已经对我的服务
进行了测试,但解析器内部也可能几乎没有逻辑,因此最好也对它们进行测试。
如何测试 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);
}
}
}
最佳答案
单元测试和 e2e 测试之间存在根本区别。在单元测试中,您想要测试单个独立单元的每个极端情况,在 e2e 测试中,您需要测试单元之间的交互。两者都很重要,请参阅this answer更详细的区别。
当您编写单元测试时,您通常会模拟单元的所有依赖项;对于您的 AccessResolvers
来说,您需要测试 AccessService
,然后测试每个公共(public)方法。有关如何使用模拟的详细示例,请参阅 this answer (解析器没有区别)。
关于javascript - 在 NestJS 中测试解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55578780/