This schematic migrates usages of RouterTestingModule inside tests to RouterModule.
When a test imports SpyLocation from @angular/common/testing and uses urlChanges property , the schematic will also add provideLocationMocks() to preserve the original behavior.
Run the schematic with:
ng generate @angular/core:router-testing-module-migration
Options
| Option | Details |
|---|---|
path |
The path (relative to project root) to migrate. Defaults to ./. Use this to incrementally migrate a subset of your project. |
Examples
Preserve router options
Before:
import { RouterTestingModule } from '@angular/router/testing';import { SpyLocation } from '@angular/common/testing';describe('test', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [RouterTestingModule.withRoutes(routes, { initialNavigation: 'enabledBlocking' })] }); });});
After:
import { RouterModule } from '@angular/router';import { SpyLocation } from '@angular/common/testing';describe('test', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [RouterModule.forRoot(routes, { initialNavigation: 'enabledBlocking' })] }); });});
Add provideLocationMocks when SpyLocation is imported and urlChanges is used
Before:
import { RouterTestingModule } from '@angular/router/testing';import { SpyLocation } from '@angular/common/testing';describe('test', () => { let spy : SpyLocation; beforeEach(() => { TestBed.configureTestingModule({ imports: [RouterTestingModule] }); spy = TestBed.inject(SpyLocation); }); it('Awesome test', () => { expect(spy.urlChanges).toBeDefined() })});
After:
import { RouterModule } from '@angular/router';import { provideLocationMocks } from '@angular/common/testing';import { SpyLocation } from '@angular/common/testing';describe('test', () => { let spy : SpyLocation; beforeEach(() => { TestBed.configureTestingModule({ imports: [RouterModule], providers: [provideLocationMocks()] }); spy = TestBed.inject(SpyLocation); }); it('Awesome test', () => { expect(spy.urlChanges).toBeDefined() })});