// counter.service.ts import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class CounterService { private count = 0; increment() { this.count++; } decrement() { this.count--; } reset() { this.count = 0; } getCount() { return this.count; } } // counter.service.spec.ts import { TestBed } from '@angular/core/testing'; import { CounterService } from './counter.service'; describe('CounterService', () => { let service: CounterService; beforeEach(() => { TestBed.configureTestingModule({}); service = TestBed.inject(CounterService); }); it('starts at 0', () => { expect(service.getCount()).toBe(0); }); it('increments the count', () => { service.increment(); service.increment(); expect(service.getCount()).toBe(2); }); it('decrements the count', () => { service.increment(); service.decrement(); expect(service.getCount()).toBe(0); }); it('resets the count', () => { service.increment(); service.reset(); expect(service.getCount()).toBe(0); }); }); /* Notes: - beforeEach gives each `it` a fresh CounterService via TestBed.inject, so tests don't bleed state into each other. - TestBed.inject pulls the service through the real DI system, the same way a component would receive it in the running app. */