Angular: как тестовый компонент определен в общем модуле - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь написать модульный тест для компонента, определенного в модуле основного ввода.Так как этот компонент использует другие компоненты, которые определены в общем модуле, я хотел бы имитировать их, а не создавать их.Итак, я начал с насмешек над компонентами.Вот пример:

@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 ...

...