Резолверы тестов в NestJS

Это образец 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);
    }
  }

}

Вы хотите написать модульный тест или тест e2e?

Kim Kern 08.04.2019 23:30

Ничего, что я решил прямо сейчас, я на самом деле ищу простое решение. Кроме того, здесь может быть полезно знать, как писать модульные тесты или e2e. :) @КимКерн

Developia 09.04.2019 07:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
2
3 385
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Но репозиторий и сервисы — это не одно и то же.

SalahAdDin 23.02.2021 21:34

Это только я или похоже, что есть опечатка или пропущенные слова в «в случае ваших AccessResolvers AccessService, а затем вы тестируете каждый общедоступный метод»?

Vencovsky 26.07.2021 18:58

Другие вопросы по теме