2014-12-22 8 views
8

Wir verwenden istanbul für die Codeabdeckung in unseren Karmatests. Dies funktioniert hervorragend, um die Codeabdeckung unserer Komponententests in JavaScript nachzuverfolgen. Dies erfasst jedoch nicht die Codeabdeckung in unseren HTML-Vorlagen.Codeabdeckung für AngularJS HTML-Vorlagen

Wir haben sehr wenig Logik in unseren Vorlagen, aber es gibt immer noch Komplexität, die wir verfolgen und sicherstellen möchten, dass wir in unseren Tests richtig behandelt haben. Was sind die besten Praktiken, um sicherzustellen, dass Sie alle Ihre HTML-Vorlagen korrekt abdecken? In unserem speziellen Fall verwenden wir ng-if und ng-switch. Wir möchten sicherstellen, dass alle Filialen ordnungsgemäß abgedeckt sind.

Antwort

0

Leider sind Istanbul und Karma entwickelt, um JavaScript, nicht HTML-Vorlagen zu testen. Da sich Ihre ng-if- und ng-switch-Anweisungen wahrscheinlich darauf auswirken, was auf der Seite angezeigt wird oder nicht, sollten Sie die End-to-end-Suite von Angular, Protractor, in Betracht ziehen. Meines Wissens gibt es kein Coverage-Tool für das Ende-zu-Ende-Testen.

+0

Danke, wir verwenden Winkelmesser für bestimmte Arten von Tests. Sie sind auf Integrationstests von Frontend + Backend ausgerichtet. Diese Tests werden zum Testen von Benutzerszenarien verwendet und sind keine Komponententests. Die Codeabdeckung ist für diese Tests nicht relevant (Szenarioabdeckung). Wir haben Komponententests, die die Interaktion mit dem DOM testen (wobei das Backend ausgedruckt wird). Und wir behalten unsere JS-Codeabdeckung im Auge, aber wir haben keine Möglichkeit, unsere Vorlagenabdeckung nachzuverfolgen. –

+0

Ich verstehe dieses Problem. Ich kenne derzeit keine Lösungen. Es wäre eine interessante Open-Source-Gabel von Istanbul, um HTML zu testen. – Adam

+0

Ja, es müsste tief in das Template-System von angular eingetaucht werden, da es eine Abdeckung über die kompilierte Vorlage durchführen müsste und dann die Coverage irgendwie auf die Originaldatei abbilden müsste. Nicht einfach. –

1

Während Sie Abdeckungsberichte von Istanbul über Drittanbieter-Plugins (https://www.npmjs.com/package/protractor-istanbul-plugin) erhalten können, ist das Problem, dass Angular das generierte DOM im Gegensatz zu React oder anderen Bibliotheken, die Templates (JSX) in JavaScript-DOM-Manipulationen konvertieren, nicht verfügbar macht ein Weg, der für die Instrumentierung möglich ist, die zum Erzeugen von Abdeckungsberichten erforderlich ist.