NestJS中的测试解析器

这是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);

    }

  }


}


千万里不及你
浏览 191回答 1
1回答

MMMHUHU

单元测试和e2e测试之间存在根本的区别。在单元测试中,您要测试单个隔离单元的每个极端情况,而在e2e测试中,您要测试单元之间的交互。两者都很重要,请参阅此答案以获取更详细的区别。编写单元测试时,通常会模拟单元的所有依赖关系。在你的情况下AccessResolvers的AccessService,然后你测试每一个公共方法。有关如何使用模拟的详细示例,请参见以下答案(解析器没有区别)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript