2016-10-15 3 views
2

Ich habe einfach ein gemeinsames Modul mit einem SharedComponent darin aufgenommen und verwenden diese Komponente in der Haupt App Komponente:Winkel-cli Tests fehlschlagen, nachdem gemeinsamen Modul über

<acs-shared></acs-shared> 

Alle, die Komponente hat folgende Funktionen Display ‚Hallo , Welt!' mit einer Eigenschaft auf der Komponente:

<h1>Hello, {{name}}!</h1> 

Das alles funktioniert gut, wenn das Projekt mit npm start läuft, aber jetzt läuft npm test ausfällt, tut dies $(npm bin)/karma start ./karma.conf.js. Der erste Fehler besteht darin, dass die Komponente nicht erstellt werden kann, weil sie das Element "acs-shared" nicht erkennt. Gibt es etwas Besonderes, um Komponenten zu testen, die andere Komponenten oder Module verwenden?

Chrome 54.0.2840 (Windows 10 0.0.0) App: AngularCliStarter should create the app FAILED 
    'acs-shared' is not a known element: 

Das Projekt ist auf Github verfügbar: https://github.com/JasonGoemaat/angular-cli-starter

Antwort

5

Sie müssen die SharedModule in die TestBed Konfiguration importieren. Was Sie mit dem TestBed tun, ist wie ein @NgModulevon Grund auf neu für die Testumgebung Konfigurieren

TestBed.configureTestingModule({ 
    imports: [ SharedModule ], 
    declarations: [ 
    AppComponent 
    ], 
    providers: [] 
}); 
+0

Awesome, macht total Sinn! Ich habe das "AppModule" importiert und es hat funktioniert. Gibt es einen Grund, das Modul, in dem sich die Komponente befindet, nicht einzubeziehen? Scheint so, als wäre das ein besserer Test, da ich vergessen konnte, das SharedModule in mein AppModule zu importieren und es scheint, dass die Tests gelingen würden, aber die App würde nicht funktionieren. Sie können die Deklarationen dann auch überspringen. –

+0

Persönlich, und das ist nur Vorliebe, versuche ich, die Tests kontrolliert und begrenzt von unnötigen Variablen zu halten. Soweit das AppModule, importiere ich das nie in Test-Test. Das AppModule hat zu viel zu tun. Dies ist, wo Sie eine Reihe von Anbietern, das BroswerModule, RoutingModule und eine Menge anderer Sachen importieren, die Sie nicht brauchen. Selbst im Falle des freigegebenen Moduls, wenn es zu viel los ist, erkläre ich die Komponente vielleicht einfach im Testbett, anstatt das geteilte Modul zu importieren. Wieder ist das nur meine Vorliebe. Jeder wird seine eigenen haben –

+1

Je mehr Sie testen, ich denke, dass Sie anfangen werden, Ihren eigenen Stil und Vorlieben herauszufinden. –

Verwandte Themen