En AppComponent, estoy usando el componente de navegación en el código HTML. La interfaz de usuario se ve bien. Sin errores al hacer ng saque. y no hay errores en la consola cuando miro la aplicación.
Pero cuando ejecuté Karma para mi proyecto, hay un error:
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.
En mi app.module.ts :
Ahi esta:
import { NavComponent } from './nav/nav.component';
También está en la parte de declaraciones de NgModule
@NgModule({
declarations: [
AppComponent,
CafeComponent,
ModalComponent,
NavComponent,
NewsFeedComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
JsonpModule,
ModalModule.forRoot(),
ModalModule,
NgbModule.forRoot(),
BootstrapModalModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
Estoy usando el NavComponent
en miAppComponent
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>
He visto una pregunta similar, pero la respuesta en esa pregunta dice que deberíamos agregar NgModule en el componente de navegación que tiene una exportación en eso, pero obtengo un error de compilación cuando hago eso.
También hay: 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
fuente
fuente
import { NavComponent }
en sus spec.tsRespuestas:
Debido a que en las pruebas unitarias desea probar el componente mayormente aislado de otras partes de su aplicación, Angular no agregará las dependencias de su módulo como componentes, servicios, etc. de forma predeterminada. Por lo tanto, debe hacerlo manualmente en sus pruebas. Básicamente, tienes dos opciones aquí:
A) Declare el NavComponent original en la prueba
B) Simulacros del NavComponent
Encontrarás más información en la documentación oficial .
fuente
AppModule
en la configuración de TestBed. ¿Recomendaría usted no hacerlo?También puedes usar
NO_ERRORS_SCHEMA
https://2018.ng-conf.org/mocking-dependencies-angular/
fuente
Para mí, la importación del componente en el padre resolvió el problema.
Agregue esto
spec of the parent
donde se usa este componente.fuente
Una razón más es que puede haber múltiples
.compileComponents()
parabeforeEach()
en su caso de pruebapor ejemplo
fuente
Paso 1: cree stubs al comienzo del archivo de especificaciones.
Paso 2: agregue stubs en las declaraciones del componente.
fuente