nestjs-testing-patternslisted
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