이 스키매틱은 테스트에서 사용하는 RouterTestingModule을 RouterModule로 마이그레이션합니다.
테스트에서 @angular/common/testing의 SpyLocation을 임포트하고 urlChanges 프로퍼티를 사용하면, 스키매틱은 기존 동작을 유지하기 위해 provideLocationMocks()도 추가합니다.
다음 명령어로 스키매틱을 실행하세요.
ng generate @angular/core:router-testing-module-migration
옵션
| 옵션 | 설명 |
|---|---|
path |
마이그레이션할 경로입니다(프로젝트 루트 기준 상대 경로). 기본값은 ./입니다. 프로젝트의 일부를 점진적으로 마이그레이션할 때 사용하세요. |
예제
라우터 옵션 유지하기
이전:
import {RouterTestingModule} from '@angular/router/testing';
import {TestBed} from '@angular/core/testing';
import {SpyLocation} from '@angular/common/testing';
describe('test', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule.withRoutes(routes, {initialNavigation: 'enabledBlocking'})],
});
});
});
이후:
import {RouterModule} from '@angular/router';
import {TestBed} from '@angular/core/testing';
import {SpyLocation} from '@angular/common/testing';
describe('test', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [RouterModule.forRoot(routes, {initialNavigation: 'enabledBlocking'})],
});
});
});
SpyLocation을 임포트하고 urlChanges를 사용할 때 provideLocationMocks 추가하기
이전:
import {RouterTestingModule} from '@angular/router/testing';
import {TestBed} from '@angular/core/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();
});
});
이후:
import {RouterModule} from '@angular/router';
import {TestBed} from '@angular/core/testing';
import {SpyLocation, provideLocationMocks} 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();
});
});