← ClaudeAtlas

nestjs-testing-patternslisted

Guides writing isolated unit tests and integration tests for NestJS controllers, services, and guards using Test.createTestingModule() and Vitest/Jest.
smicolon/ai-kit · ★ 6 · Testing & QA · score 79
Install: claude install-skill smicolon/ai-kit
# NestJS Testing Patterns Best practices for writing unit and integration tests in NestJS applications. ## 1. Service Unit Testing (Mocked Dependencies) Test business logic in isolation by overriding providers with mocks: ```typescript import { Test, TestingModule } from '@nestjs/testing' import { UsersService } from './users.service' import { getRepositoryToken } from '@nestjs/typeorm' import { User } from '../entities' describe('UsersService', () => { let service: UsersService const mockUserRepository = { find: jest.fn(), findOneBy: jest.fn(), save: jest.fn(), } beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ providers: [ UsersService, { provide: getRepositoryToken(User), useValue: mockUserRepository, }, ], }).compile() service = module.get<UsersService>(UsersService) }) it('should find user by id', async () => { const expectedUser = { id: 'uuid-1', email: 'test@example.com' } mockUserRepository.findOneBy.mockResolvedValue(expectedUser) const result = await service.findById('uuid-1') expect(result).toEqual(expectedUser) expect(mockUserRepository.findOneBy).toHaveBeenCalledWith({ id: 'uuid-1' }) }) }) ``` --- ## 2. Controller Unit Testing ```typescript import { Test, TestingModule } from '@nestjs/testing' import { UsersController } from './users.controller' import { UsersService } from './users.service' describ