No AppComponent, estou usando o componente nav no código HTML. A interface do usuário parece boa. Sem erros ao fazer o serviço. e sem erros no console quando olho para o aplicativo.
Mas quando executei Karma para meu projeto, ocorreu um erro:
Failed: Template parse errors:
'app-nav' is not a known element:
1. If 'app-nav' is an Angular component, then verify that it is part of this module.
2. If 'app-nav' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
Em meu app.module.ts :
Há sim:
import { NavComponent } from './nav/nav.component';
Também está na parte de declarações do NgModule
@NgModule({
declarations: [
AppComponent,
CafeComponent,
ModalComponent,
NavComponent,
NewsFeedComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
JsonpModule,
ModalModule.forRoot(),
ModalModule,
NgbModule.forRoot(),
BootstrapModalModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
Estou usando NavComponent
no meuAppComponent
app.component.ts
import { Component, ViewContainerRef } from '@angular/core';
import { Overlay } from 'angular2-modal';
import { Modal } from 'angular2-modal/plugins/bootstrap';
import { NavComponent } from './nav/nav.component';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Angela';
}
app.component.html
<app-nav></app-nav>
<div class="container-fluid">
</div>
Eu vi uma pergunta semelhante, mas a resposta nessa pergunta diz que devemos adicionar NgModule no componente de navegação que tem uma exportação nele, mas estou recebendo um erro de compilação quando faço isso.
Existe também: app.component.spec.ts
import {NavComponent} from './nav/nav.component';
import { TestBed, async } from '@angular/core/testing';
import { AppComponent } from './app.component';
javascript
node.js
angular
typescript
karma-jasmine
Angela P
fonte
fonte
import { NavComponent }
em seu spec.tsRespostas:
Como nos testes de unidade você deseja testar o componente principalmente isolado de outras partes do seu aplicativo, o Angular não adicionará as dependências do seu módulo, como componentes, serviços, etc. por padrão. Portanto, você precisa fazer isso manualmente em seus testes. Basicamente, você tem duas opções aqui:
A) Declare o NavComponent original no teste
B) Zombar do NavComponent
Você encontrará mais informações na documentação oficial .
fonte
AppModule
na configuração do TestBed. Você recomendaria contra isso?Você também pode usar
NO_ERRORS_SCHEMA
https://2018.ng-conf.org/mocking-dependencies-angular/
fonte
Para mim, importar o componente no pai resolveu o problema.
Adicione isso
spec of the parent
onde este componente é usado.fonte
Mais um motivo é que pode haver vários
.compileComponents()
parabeforeEach()
em seu caso de testepor exemplo
fonte
Etapa 1: Crie stubs no início do arquivo de especificação.
Etapa 2: adicionar stubs nas declarações do componente.
fonte