Я пытаюсь написать модульный тест для компонента, определенного в модуле основного ввода.Так как этот компонент использует другие компоненты, которые определены в общем модуле, я хотел бы имитировать их, а не создавать их.Итак, я начал с насмешек над компонентами.Вот пример:
@Component({ selector: "frt-dados-gerais", template: "" })
class DadosGeraisStubComponent {
@Input() utilizador: DadosUtilizadorInstancia;
@Input() gravacaoEmCurso = false;
@Output() atualizaDadosGerais = new EventEmitter<InfoDadosGerais>();
}
Теперь, так как мой общий модуль экспортирует компонент frt-dados-gerais
, я попытался переопределить модуль с помощью кода, который выглядит следующим образом:
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
HttpClientTestingModule,
NoopAnimationsModule,
RouterTestingModule.withRoutes(rotas),
BrowserModule,
ReactiveFormsModule,
PanelModule,
GrowlModule,
CoreModule,
SharedModule
],
declarations: [
DadosPessoaisComponent,
DadosGeraisStubComponent,
PalavraChaveStubComponent,
FuncoesDesempenhadasStubComponent,
IndisponibilidadeMotoristaStubComponent
],
providers: [
{ provide: UtilizadoresService, useValue: servicoUtilizadores },
{ provide: AutenticacaoService, useValue: servicoAutenticacao },
{ provide: ConfirmationService, useValue: utilizadoresService}
]
})
.overrideModule(SharedModule, {
remove: {
exports: [
DadosPessoaisComponent,
DadosGeraisComponent,
FuncoesDesempenhadasComponent,
IndisponibilidadeMotoristaComponent,
DadosGeraisComponent
]
}
})
Как вы можете видеть, я попытался отменить экспорт, чтобы я не получал и сообщаю об ошибке, что у компонента есть два определения.Я явно что-то упускаю, потому что всегда получаю ошибку NullInjectorError: No provider for DadosPessoaisComponent
.
Может кто-нибудь помочь?
РЕДАКТИРОВАТЬ: хорошо, наконец-то разберитесь.Такая глупая ошибка ... Итак, я использовал TestBed.get
вместо TestBed.createComponent
для создания тестируемого компонента ... Вот почему я получаю исключение NullInjectorError
...