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

Тест сервиса в Nest

Логика списка живёт в отдельном классе, и после правки хочется узнать результат сразу, не открывая браузер и не поднимая весь сервер. Ручной обход адресов не покрывает каждую ветку внутри сервиса.

Пакет @nestjs/testing даёт фабрику Test.createTestingModule: в неё передают список провайдеров, вызывают compile и получают готовый контейнер. Из него через get достают экземпляр сервиса и проверяют возвращаемое значение. Сценарий пишут в Vitest, раннер vitest выполняет блоки describe и it.

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

npm install vitest @nestjs/testing

Сервис отдаёт готовую строку списка:

import { Injectable } from '@nestjs/common'; @Injectable() export class PostService { getPosts(): string { return 'All posts'; } }

Тест собирает модуль только с этим провайдером и сравнивает ответ сервиса с ожиданием:

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

Запуск одного файла:

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

Напишите проверку для WorkerService, которая собирает тестовый модуль с этим провайдером и сравнивает строку списка работников с ожиданием.

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