0 Tage Serie
javascript / intermediate
Snippet

Abfangen von ActivatedRoute Query-Param-Maps in Jasmine-Tests

Beim Testen von Komponenten, die von URL-Suchparametern abhängen, führt die Bereitstellung einer vollständigen Router-Instanz zu unnötiger Komplexität. Die Verwendung von Angulars Hilfsfunktion convertToParamMap in Kombination mit einem RxJS of()-Observable erstellt einen isolierten und deterministischen Stub von ActivatedRoute.queryParamMap für Unit-Tests.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import { TestBed } from '@angular/core/testing';
import { ActivatedRoute, convertToParamMap } from '@angular/router';
import { of } from 'rxjs';
import { DashboardComponent } from './dashboard.component';
describe('DashboardComponent Route Testing', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [DashboardComponent],
providers: [
{
provide: ActivatedRoute,
useValue: {
queryParamMap: of(convertToParamMap({ view: 'analytics', page: '2' }))
}
}
]
}).compileComponents();
});
});
angular
Erklärung
1
import { ActivatedRoute, convertToParamMap } from '@angular/router';
Importiert Routen-Schnittstellen und die Hilfsfunktion zum Erstellen unveränderlicher Param-Maps.
2
queryParamMap: of(convertToParamMap({ view: 'analytics', page: '2' }))
Kapselt simulierte Query-Parameter in einem Observable-Stream, der Router-Emissionen nachbildet.