javascript / intermediate
Snippet
Injektion von Mock-Service-Unterklassen in Komponenten-Testumgebungen
Angular-Unit-Tests können echte Service-Abhängigkeiten überschreiben, indem abgeleitete Mock-Klassen über `useClass` in `TestBed.configureTestingModule` bereitgestellt werden.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import { TestBed } from '@angular/core/testing';import { ProfileComponent } from './profile.component';import { UserDataService } from './user-data.service';class MockUserDataService extends UserDataService {override fetchUserPermissions(): string[] {return ['READ', 'WRITE'];}}describe('ProfileComponent DI Hierarchy', () => {beforeEach(async () => {await TestBed.configureTestingModule({imports: [ProfileComponent],providers: [{ provide: UserDataService, useClass: MockUserDataService }]}).compileComponents();});it('instantiates the component with overridden service behavior', () => {const fixture = TestBed.createComponent(ProfileComponent);expect(fixture.componentInstance).toBeTruthy();});});
angular
Erklärung
1
class MockUserDataService extends UserDataService {
Erbt vom Basis-Service, um eine isolierte Mock-Implementierung mit überschriebenen Methoden zu erstellen.
2
providers: [{ provide: UserDataService, useClass: MockUserDataService }]
Registriert die Mock-Klasse als Ersatz-Token im Test-Dependency-Injection-Container.
3
const fixture = TestBed.createComponent(ProfileComponent);
Erstellt eine Komponenteninstanz, die an den gemockten Dependency-Baum gebunden ist.