Javascript 在NestJS中测试解析器

Javascript 在NestJS中测试解析器,javascript,node.js,typescript,jestjs,nestjs,Javascript,Node.js,Typescript,Jestjs,Nestjs,这是NestJs中的resolver示例,我将为此文件编写测试。但是在nestjs文档中没有测试解析器的文档 我已经为我的服务做了一个测试,但是解析器里面可能也没有什么逻辑,所以最好也对它们进行测试 如何测试解析器文件 import { ObjectId } from 'mongodb'; import { AuthGuard } from '../utils/Auth.guards'; import { UseGuards } from '@nestjs/common'; import { I

这是NestJs中的
resolver
示例,我将为此文件编写测试。但是在nestjs文档中没有测试解析器的文档

我已经为我的
服务
做了一个测试,但是解析器里面可能也没有什么逻辑,所以最好也对它们进行测试

如何测试
解析器
文件

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测试中,您需要测试单元之间的交互。两者都很重要,有关更详细的区别,请参见


编写单元测试时,通常会模拟单元的所有依赖项;对于
AccessResolvers
AccessService,然后测试每个公共方法。有关如何使用mock的详细示例,请参阅(解析程序没有区别)。

您想编写单元测试还是e2e测试?我现在没有决定,实际上我在寻找一个简单的解决方案。除此之外,了解如何编写单元测试或e2e在这里也是有益的。:)@但是存储库和服务是不同的。