Performance: Unit testing services
Unit testing services affects development speed and feedback loop but does not impact runtime page load or rendering performance.
import { Test } from '@nestjs/testing'; import { MyService } from './my.service'; import { DependencyService } from './dependency.service'; describe('MyService', () => { let service: MyService; beforeEach(async () => { const moduleRef = await Test.createTestingModule({ providers: [ MyService, { provide: DependencyService, useValue: { getData: jest.fn().mockReturnValue('mock') } }, ], }).compile(); service = moduleRef.get<MyService>(MyService); }); it('should return mocked value', () => { expect(service.getValue()).toBe('mock'); }); });
describe('MyService', () => { let service: MyService; beforeEach(() => { service = new MyService(); // no dependency injection or mocks }); it('should return expected value', () => { expect(service.getValue()).toBe('real value'); }); });
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Direct service instantiation without mocks | 0 | 0 | 0 | [X] Bad - slows test feedback loop |
| Using NestJS Test module with mocks | 0 | 0 | 0 | [OK] Good - fast isolated tests |
service.getData()?
const mockData = ['a', 'b'];
const mockRepo = { findAll: () => mockData };
const module = await Test.createTestingModule({
providers: [
MyService,
{ provide: MyRepository, useValue: mockRepo },
],
}).compile();
const service = module.get<MyService>(MyService);
console.log(service.getData());const module = await Test.createTestingModule({
providers: [MyService],
}).compile();
const service = module.get<MyService>(MyService);
jest.spyOn(service, 'findAll').mockReturnValue(['x', 'y']);Pass the test and this pattern moves unknown