angular - StaticInjectorError(DynamicTestModule) - NullInjectorError: Nu există un furnizor pentru InjectionToken fuseCustomConfig
Tocmai am început cu testarea, așa că am nevoie de puțin ajutor.
Am un LoginModule în Angular care conține LoginComponent pe care vreau să-l testez.
Iată configurația LoginModule
@NgModule({
declarations: [
LoginComponent
],
imports: [
CommonModule,
ReactiveFormsModule,
RouterModule.forChild(routes),
MatFormFieldModule,
MatInputModule,
MatCheckboxModule,
MatSnackBarModule,
MatButtonModule,
MatRadioModule
]
})
export class LoginModule { }
Și LoginComponent depinde de servicii precum
constructor(
private fuseConfig: FuseConfigService,
private formBuilder: FormBuilder,
private router: Router,
private authenticationService: AuthService,
private route: ActivatedRoute,
private snackBar: MatSnackBar,
private fuseNavigationService: FuseNavigationService,
private pbiService: PbiService,
private translateService: TranslateService
) {
this.incorrectCredentials = false;
this.loginFormErrors = {
email: {},
password: {},
};
}
Și iată cum scriu fișierul spec
import { TestBed, fakeAsync, ComponentFixture } from "@angular/core/testing";
import { DebugElement } from "@angular/core";
import { By } from "@angular/platform-browser";
import { LoginComponent } from "./login.component";
import { LoginModule } from "./login.module";
import { Router } from "@angular/router";
import { FuseConfigService } from "@fuse/services/config.service";
import { FuseNavigationService } from "@fuse/components/navigation/navigation.service";
describe("Login Module -> ", () => {
let component: LoginComponent;
let fixture: ComponentFixture<LoginComponent>;
beforeEach(() => {
// refine the test module by declaring the test component
TestBed.configureTestingModule({
imports: [LoginModule],
providers: [
{ provide: Router, useClass: class { navigate = jasmine.createSpy("navigate"); } },
FuseConfigService, FuseNavigationService
]
});
// create component and test fixture
fixture = TestBed.createComponent(LoginComponent);
// get test component from the fixture
component = fixture.componentInstance;
});
it("Login page has title and login button", fakeAsync(() => {
const elTitle: DebugElement = fixture.debugElement.query(By.css(".la-title"));
expect(elTitle.nativeElement.textContent.trim()).toBe("");
fixture.detectChanges();
expect(elTitle.nativeElement.textContent.trim()).toBe("Login");
}));
});
Dar primesc următoarea eroare
Error: StaticInjectorError(DynamicTestModule)[FuseConfigService -> InjectionToken fuseCustomConfig]:
StaticInjectorError(Platform: core)[FuseConfigService -> InjectionToken fuseCustomConfig]:
NullInjectorError: No provider for InjectionToken fuseCustomConfig!
Îmi scapă ceva?
Și este aceasta calea corectă de a testa un Component dintr-un Modul, adică importând modulul în sine, sau declarând componenta doar în TestBed.configureTestingModule ?