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

Тестовый модуль в Nest

Контроллер и сервис уже оформлены общим модулем темы, и проверять их по отдельности неудобно: связь между списком провайдеров и страницей как раз и должна работать вместе.

Класс модуля импортируют в createTestingModule через поле imports. После compile контейнер знает и сервис, и контроллер так же, как в рабочем приложении, только без лишних импортов корня.

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

import { Module } from '@nestjs/common'; import { PostController } from './post.controller.js'; import { PostService } from './post.service.js'; @Module({ controllers: [PostController], providers: [PostService], }) export class PostsModule {}

Сервис и контроллер модуля:

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

Тест импортирует модуль целиком и проверяет связку:

import { describe, it, expect } from 'vitest'; import { Test } from '@nestjs/testing'; import { PostsModule } from '../src/posts/posts.module.js'; import { PostController } from '../src/posts/post.controller.js'; describe('PostsModule', () => { it('wires controller to service', async () => { const moduleRef = await Test.createTestingModule({ imports: [PostsModule], }).compile(); const controller = moduleRef.get(PostController); expect(controller.getPosts()).toBe('All posts'); }); });

Запуск:

npx vitest run test/posts.module.spec.ts

Оформите WorkersModule с WorkerController и WorkerService, импортируйте его в проверке и сравните строку списка работников с ожиданием.

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