Unit-Tests angular2 Komponente mit importierten Modul
Ich versuche zu schreiben, einen test auf eine Komponente, die verwendet eckig-material2, aber wenn ich es in mein testModule Erklärungen ich erhalten:
Error: Template parse errors:
'md-card-title' is not a known element:
1. If 'md-card-title' is an Angular component, then verify that it is part of this module.
2. If 'md-card-title' is a Web Component then add "CUSTOM_ELEMENTS_SCHEMA" to the '@NgModule.schemas' of this component to suppress this message.
Hinzufügen MaterialModule auf die Erklärungen wirft `Fehler: Unerwarteter Modul 'MaterialModule' deklariert, indem das Modul
DynamicTestModule' in config/spec-bundle.js (Zeile 24994)
Dies ist, was meine spec-Datei sieht wie folgt aus:
beforeEach(() => TestBed.configureTestingModule({
declarations: [],
providers: [
{ provide: DataService, useValue: mockDataService },
{ provide: ActivatedRoute, useClass: MockActivatedRoute },
{ provide: Router, useValue: mockRouter },
CellViewComponent
]
}));
hinzufügen CellViewComponent
auf die Erklärungen array Ursachen der Fehler zu werfen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die
TestBed.configureTestingModule
bist du ein Modul erstellen von Grund für die Testumgebung. Also, was immer Sie brauchen würde, in der realen Anwendung für denCellViewComponent
zu arbeiten, müssen Sie auch die Konfiguration der Test-Modul.In Ihrem Fall, Sie sind nicht das Material, Karte Komponente. In der app sind Sie wahrscheinlich entweder importiert die
MaterialModule
oder dieMdCardModule
in IhreAppModule
. So müssen Sie das gleiche zu tun in der Prüfung ModulDisconnected, because no message in 10000 ms.
- keine tests ausgeführt werden...Dies ist ein echtes problem: Sie können mock alles, aber die importierte Komponente Selektor.
Gibt es einen einfachen Weg. Es ermöglicht, um den Import der Module, sondern Sie können einfach deaktivieren Sie diese Art von Fehler.
Nur fügen Sie diese an Ihre Modul:
Angular2 docs link
Ja, es wird nicht helfen, wenn Sie wollen, um die integration (nicht isoliert) tests, aber es perfekt funktioniert für isolierte lieben.
Immer noch, auch wenn Sie sich dazu entschließen würde, ein Modul importieren denke ich, es wäre richtiger zu importieren, die mock-Modul mit allen implementierten Selektoren statt.
Was ich oft tun, wenn bei der Prüfung unserer Eckige Komponenten der Anwendung, ist einfach importieren Sie die übergeordneten Modul per Referenz. Für die meisten Anwendungsfälle ist es genug oder nah genug, und wenn Sie ändern Sie die Komponente, über das hinzufügen von neuen Erklärungen oder importiert, dann müssen Sie nicht Sorge über das ändern der Datei test, da der test-Datei importiert das übergeordnete Modul.
Ich immer nur auf das Modul zu importieren, externe Komponenten für Testzwecke, aber das ist selten.
Regelmäßigen test Initialisierung pseudo-code
lassen Sie uns sagen, dass diese Komponente in einem Modul. Ich legte den Erklärungen Objekt in eine variable für den Einsatz in ParentModule und Testen gleichzeitig.
Dann, statt umschreiben der gesamte Modul-array in die testing-Komponente und sehr unDRY, ich weiß.
Und wenn ich muss etwas hinzufügen, dann können wir nur hinzufügen, dass es vor der Konfiguration der test-Bett