Di Mockable Services

Design injectable, mockable services (interfaces + composition root)

majiayu000 111e4ab 2 files · 1.9 KB Updated 567 repo stars

File contents

What I do

Je standardise la DI (injection de dépendances) et la conception mockable.

Core rules

  • Écrire le contrat d'abord : IUserApi, UserRepository, etc.
  • Les hooks/use-cases dépendent des interfaces.
  • Les implémentations concrètes vivent dans infra/.
  • Le seul endroit qui instancie l'infra est le composition root.

Example (frontend service)

export interface IUserApi {
  getById(id: string): Promise<UserDTO>;
}

export class UserApi implements IUserApi {
  constructor(private readonly http: HttpClient) {}
  getById(id: string) { return this.http.get(`/users/${id}`); }
}

export class FakeUserApi implements IUserApi {
  async getById(id: string) { return { id, name: 'Test' }; }
}

Testing guidance

  • En test, remplacer via le container : container.userApi = new FakeUserApi().
  • Éviter les mocks globaux non typés.

majiayu000/claude-skill-registry-data/tree/main/data/di-mockable-services commit 111e4ab0c6

Frequently asked questions

npx skillmds add majiayu000/di-mockable-services