Angular 7 Test: NullInjectorError: Kein Anbieter für ActivatedRoute
Lesezeit: 3 Minuten
Daniel Caputo
Hallo, ich habe einen Fehler beim Testen meiner App, die mit Angular 7 erstellt wurde. Ich habe nicht viel Erfahrung mit Angular, daher würde ich Ihre Hilfe benötigen +
Error: StaticInjectorError(DynamicTestModule)[BeerDetailsComponent -> ActivatedRoute]:
StaticInjectorError(Platform: core)[BeerDetailsComponent -> ActivatedRoute]:
NullInjectorError: No provider for ActivatedRoute!
Wenn ich das mache, bekomme ich den Fehler NullInjectorError: No provider for ActivatedRoute!
– Ross Brasseaux
3. Juli 2020 um 20:24 Uhr
Haben Sie dieses Modul in die Spezifikationsdatei importiert?
– RaulDanielPopa
4. August 2020 um 19:24 Uhr
Ich glaube, die Lösung bestand darin, einen Anbieter für die Route hinzuzufügen, wobei ein anonymes Objekt verwendet wurde, das die Eigenschaften enthält, auf die der Test zugreift.
– Ross Brasseaux
4. August 2020 um 19:33 Uhr
Dies sollte die akzeptierte Antwort sein
– Alfredo A.
10. Februar 2022 um 14:54 Uhr
Wenn Sie 2022 dazu kommen, dann RouterTestingModule lebt jetzt in @angular/common/http/testing
– Mike Poole
4. Juli 2022 um 13:56 Uhr
Fügen Sie den folgenden Import hinzu
imports: [
RouterModule.forRoot([]),
...
],
Wo soll ich RouterModule.forRoot importieren ([]),?
– Daniele Caputo
6. Dezember 2018 um 15:14 Uhr
Im Modul import { RouterModule } from '@angular/router';
– Sachila Ranawaka
6. Dezember 2018 um 15:14 Uhr
RouterModule sollte nicht in den Testdateien enthalten sein
– Arjun Panik
16. April 2020 um 11:01 Uhr
das ist keine richtige Lösung, dadurch müssen Sie alle Roter-Modul-Provider-Parameter, APP_BASE_HREF-Token usw. definieren. Verwenden Sie stattdessen RouterTestingModule ohne Router-Provider-Deklarationen
– cagcak
29. Mai 2020 um 11:18 Uhr
Wäre eine gute Antwort, wenn Sie angeben, wo der Import hinzugefügt werden soll
– NiemandIrgendwo
10. Dezember 2020 um 9:34 Uhr
Ich hatte diesen Fehler auch einige Zeit beim Testen, und keine dieser Antworten hat mir wirklich geholfen. Was es für mich behoben hat, war das Importieren sowohl des RouterTestingModule als auch des HttpClientTestingModule.
Im Wesentlichen würde es in Ihrer Datei “whatever.component.spec.ts” so aussehen.
Beispiel für einen einfachen Test mit dem Dienst und ActivatedRoute! Viel Glück!
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();
});
});
Benutzt du teste überall? wofür wird es benötigt?
– JSON-Derulo
21. August 2020 um 9:19 Uhr
Ich verwende überall, wo ich arbeite, eine Möglichkeit, um sicherzustellen, dass die Anwendung nach einer Änderung weiter funktioniert, ohne meinen Code zu beschädigen.
– Cherma Ramalho
11. September 2020 um 17:00 Uhr
Benutzt du teste überall? wofür wird es benötigt?
– JSON-Derulo
21. August 2020 um 9:19 Uhr
Ich verwende überall, wo ich arbeite, eine Möglichkeit, um sicherzustellen, dass die Anwendung nach einer Änderung weiter funktioniert, ohne meinen Code zu beschädigen.
– Cherma Ramalho
11. September 2020 um 17:00 Uhr
14386400cookie-checkAngular 7 Test: NullInjectorError: Kein Anbieter für ActivatedRouteyes