Тестовые преобразователи в NestJS - PullRequest
0 голосов
/ 08 апреля 2019

Это пример resolver в NestJs, и я собираюсь написать тесты для этого файла. Но в документации по 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 Ответ

1 голос
/ 09 апреля 2019

Существует принципиальная разница между модульными тестами и тестами e2e. В модульных тестах вы хотите проверить каждый угловой случай отдельного изолированного модуля, а в тесте e2e вы проверяете взаимодействие между вашими модулями. Оба важны, см. этот ответ для более детального различия.

Когда вы пишете модульный тест, вы обычно высмеиваете все зависимости вашего модуля; в случае вашего AccessResolvers AccessService, а затем вы тестируете каждый публичный метод. Подробный пример использования макетов см. В этом ответе (для распознавателей разницы нет).

...