Как провести модульное тестирование декоратора @Query() с помощью Jest в NestJS?

Я пытаюсь написать модульные тесты для своего приложения NestJS с помощью Jest. У меня есть преобразователь с декоратором @Query() из @nestjs/graphql, который я хочу протестировать, но не уверен, как добиться 100%-го покрытия тестами для строки, содержащей декоратор @Query().

Вот код моего преобразователя:

    @Resolver(() => Person)
    export class MyResolver {
      @Query(() => Person, { name: 'personLogged' })
      async getPerson(
        @Token() tokenPersonLogged: string,
        @Context() context,
        @Profiles() personProfiles: string[],
      ): Promise<Person> {
        // ...
      }
    }

Любая помощь будет принята с благодарностью!

Поведение ключевого слова "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) для оценки ваших знаний,...
1
0
222
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Обычно это проверяется в сквозных тестах:

import { INestApplication } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import * as request from 'supertest';
import { Person } from '../src/person/person.model';
import { PersonModule } from '../src/person/person.module';
import { PersonService } from '../src/person/person.service';

describe('Person resolver', () => {
  // your mocks
  const person: Person = { name: 'John' };
  const personService: PersonService = { get: () => person };

  let app: INestApplication;

  beforeAll(async () => {
    // if you don't have a standalone module, you might import the `AppModule` instead
    const fixture = await Test.createTestingModule({ imports: [PersonModule] })
      // register the mocks here
      .overrideProvider(PersonService).useValue(personService)
      .compile();
    app = fixture.createNestApplication();
    await app.init();
  });

  afterAll(async () => {
    await app.close();
  });

  test('personLogged', () => {
    return request(app.getHttpServer())
      .post('/graphql')
      // pass the graphql query (or use a graphql client instead)
      .send({ query: '{ personLogged { name } }' })
      .expect(200)
      .expect((res) => {
        expect(res.body.data.personLogged).toEqual(person);
      });
  });
});

В моем случае мне пришлось импортировать AppModule, потому что я не работаю с автономными модулями, но здесь это решено. Большое спасибо!!

Uder Moreira 03.03.2024 15:21

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

Jest + React – свойство соответствия не установлено
Что означает строка «test»: «cross-env NODE_ENV=test jesttests/» и зачем она нужна
Как получить в шутке тест на промежуточное программное обеспечение для обработки ошибок в node-postgres, передающее базу данных PostgreSQL в JavaScript (получающее неопределенное значение)?
Выдана ошибка Jest: «Превышено время ожидания 5000 мс для теста. Добавьте значение времени ожидания в этот тест, чтобы увеличить время ожидания»
RTK-запрос, реагирование и fetch-mock-jest: нераспознанный объект запроса
Ошибка «Невозможно найти модуль» при запуске шуточного теста
Stylex не может скомпилироваться во время шуточных тестов: «stylex.create никогда не следует вызывать. Его следует скомпилировать»
Модульный тест, похоже, не запускает поток RxJS
Jest toHaveBeenNthCalledWith возвращает значение переменной, установленное в данный момент, а не значение во время вызова
Как я могу протестировать MatDialog.open в конструкторе