У меня не пройден тест кармы из-за ошибки NullInjector для службы.
- Служба работает в компоненте (проблема с тестом, а не с компонентом?),
- внедрение службы работает для других компонентов, и их тесты проходят
Решения по аналогичным вопросам связаны с объявлением поставщика.В моем случае я объявил поставщика (см. Ниже), и служба работает внутри компонента.
Error: StaticInjectorError[LoginComponent -> AuthenticationProvider]:
NullInjectorError: No provider for AuthenticationProvider!
Служба:
@Injectable()
export class AuthenticationProvider {
uri: string
constructor(
private http: HttpClient,
private config: SancusConfiguration,
)
{
}
Неудачный тест:
describe('LoginComponent', () => {
let component: LoginComponent;
let fixture: ComponentFixture<LoginComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ AppModule ],
declarations: [ ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(LoginComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
Я перечислил AuthenticationProvider в провайдерах в NgModule:
@NgModule({
declarations: [
AppComponent,
LoginComponent,
....
],
imports: [
BrowserModule,
AppRoutingModule,
CollapseModule.forRoot(),
ReactiveFormsModule,
HttpClientModule
],
schemas: [ NO_ERRORS_SCHEMA ],
providers: [
AuthenticationProvider,
.....
],
bootstrap: [AppComponent]
})
export class AppModule { }