각도 7 테스트: Null Injector 오류: 활성화된 경로에 대한 공급자 없음
안녕하세요, Angular 7로 만든 앱을 테스트하는 데 오류가 있습니다.제가 앵글 경험이 많지 않아서 도움이 필요할 것 같습니다.
Error: StaticInjectorError(DynamicTestModule)[BeerDetailsComponent -> ActivatedRoute]:
StaticInjectorError(Platform: core)[BeerDetailsComponent -> ActivatedRoute]:
NullInjectorError: No provider for ActivatedRoute!
테스트 코드는 다음과 같습니다.
import { async, ComponentFixture, TestBed, inject } from '@angular/core/testing';
import { BeerDetailsComponent } from './beer-details.component';
import {
HttpClientTestingModule,
HttpTestingController
} from '@angular/common/http/testing';
describe('BeerDetailsComponent', () => {
let component: BeerDetailsComponent;
let fixture: ComponentFixture<BeerDetailsComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
declarations: [ BeerDetailsComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(BeerDetailsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create',
inject(
[HttpTestingController],
() => {
expect(component).toBeTruthy();
}
)
)
});
저는 정말 아무런 해결책을 찾을 수가 없습니다.
다니엘레
라우터 테스트 모듈을 가져와야 합니다.
import { RouterTestingModule } from "@angular/router/testing";
imports: [
...
RouterTestingModule
...
]
다음 가져오기 추가
imports: [
RouterModule.forRoot([]),
...
],
테스트를 하는 동안에도 한동안 이런 오류가 있었는데, 이 중 어떤 것도 도움이 되지 않았습니다.제가 해결한 것은 라우터 테스트 모듈과 HttpClient 테스트 모듈을 모두 가져오는 것이었습니다.
따라서 기본적으로 당신의 what.component.spects 파일에서는 이렇게 보일 것입니다.
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ProductComponent],
imports: [RouterTestingModule, HttpClientTestingModule],
}).compileComponents();
}));
수입품은 다음에서 받으실 수 있습니다.
import { RouterTestingModule } from "@angular/router/testing";
import { HttpClientTestingModule } from "@angular/common/http/testing";
이것이 최선의 해결책인지는 모르겠지만, 이것은 저에게 효과가 있었습니다.
이 문제는 다음과 같이 해결할 수 있습니다.
해당 spec.ts 파일에서 RouterTestingModule
import { RouterTestingModule } from '@angular/router/testing';
같은 파일에서 가져오기 중 하나로 RouterTestingModule을 추가합니다.
beforeEach(() => { TestBed.configureTestingModule({ imports: [RouterTestingModule], providers: [Service] }); });
서비스와 ActivatedRoute를 이용한 간단한 테스트 예시!행운을 빕니다.
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { HttpClientModule } from '@angular/common/http';
import { MyComponent } from './my.component';
import { ActivatedRoute } from '@angular/router';
import { MyService } from '../../core/services/my.service';
describe('MyComponent class test', () => {
let component: MyComponent;
let fixture: ComponentFixture<MyComponent>;
let teste: MyComponent;
let route: ActivatedRoute;
let myService: MyService;
beforeEach(async(() => {
teste = new MyComponent(route, myService);
TestBed.configureTestingModule({
declarations: [ MyComponent ],
imports: [
RouterTestingModule,
HttpClientModule
],
providers: [MyService]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('Checks if the class was created', () => {
expect(component).toBeTruthy();
});
});
언급URL : https://stackoverflow.com/questions/53654341/angular-7-test-nullinjectorerror-no-provider-for-activatedroute
'programing' 카테고리의 다른 글
cmd.exe 및 PowerShell에서 PROPMENT(PROPMENT만 해당)의 색상은? (0) | 2023.10.01 |
---|---|
중앙 이미지(가로로 div) (0) | 2023.10.01 |
MySQL을 "솔직하게" "최적화 없이 모든 하위 쿼리로 쿼리를 실행할 수 있는 방법? (0) | 2023.10.01 |
apache mysql - 3306에서 "packets 고장" (0) | 2023.10.01 |
AngularJS - URL 입력 필드에 http 접두사 추가 (0) | 2023.10.01 |