РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsSpTeTc 136 of 201 menu
◀ ▶

Тест контроллера в Nest

Страница только передаёт вызов во внедрённый класс, и ошибка может сидеть в связке, а не в тексте ответа. Гонять HTTP ради одной строки из сервиса избыточно, если сервис уже можно подставить объектом.

Тестовый модуль регистрирует контроллер и провайдер сервиса через useValue. После compile из контейнера берут экземпляр контроллера и обращаются к странице так же, как это делает фреймворк при обращении клиента.

Покажем на примере постов:

import { Controller, Get } from '@nestjs/common'; import { PostService } from './post.service.js'; @Controller() export class PostController { postService: PostService; constructor(postService: PostService) { this.postService = postService; } @Get('posts') getPosts(): string { return this.postService.getPosts(); } }

Заглушка сервиса и проверка ответа страницы:

import { describe, it, expect } from 'vitest'; import { Test } from '@nestjs/testing'; import { PostController } from '../src/post.controller.js'; import { PostService } from '../src/post.service.js'; describe('PostController', () => { it('returns stubbed posts', async () => { const stub = { getPosts: () => 'Stub posts', }; const moduleRef = await Test.createTestingModule({ controllers: [PostController], providers: [ { provide: PostService, useValue: stub }, ], }).compile(); const controller = moduleRef.get(PostController); expect(controller.getPosts()).toBe('Stub posts'); }); });

Запуск:

npx vitest run test/post.controller.spec.ts

Соберите тестовый модуль с WorkerController и заглушкой WorkerService, затем проверьте, что страница возвращает строку из подмены.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить