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