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() })});