2014-09-22 7 views
5

Angenommen, Ihr Javascript führt einige Element-/Positionsberechnungen durch, z. in angularjs Richtlinie.Sollten wir CSS in Karma-Unit-Level-Tests in AngularJS-Projekten verwenden

Um diesen Javascript-Code zu testen, ist es angemessen, CSS in karma.conf.js aufzunehmen?

Ich sehe, dass einige beliebte Projekte CSS-Dateien enthalten.

z.B. ng-grid Projekt karma.conf.js

'dist/release/ui-grid.css', 

Die Fragen sind mehr in Richtung der Grenze von e2e Tests vs. Unit-Tests.

+1

Ich verstehe nicht wirklich, was Sie brauchen, die CSS für –

+0

@StephanMuller Viele Male Richtlinien verwenden HTML-Vorlage? Url. Wenn Sie HTML haben, haben Sie CSS. Nachverknüpfungsfunktionen müssen möglicherweise Positionen berechnen, z. Tooltip-Platzierung mit schreibgeschützten offsetLeft-Eigenschaften, die definiert sind, wenn das CSS ordnungsgemäß geladen wurde. Ohne dies kann die Berechnungslogik (über Addition/Subtraktion hinaus) nicht getestet werden, da OffsetLeft nicht zuverlässig ist. – bhantol

+1

Ich denke, die Antwort sollte ja sein. Wenn Sie Elementdimensionen oder -koordinaten in Direktiven verwenden und diese dann testen möchten, könnte es sinnvoll sein, die echte CSS-Datei anstelle des Inline-Tests zu verwenden. Vielleicht könnte dies als Integrationstest betrachtet werden. Inline-CSS wird für reine Einheiten bevorzugt test –

Antwort

4

Soweit ich verstehe Ihre Frage, hier ist mein nehmen auf diese -

Unit-Test sind Funktionalität bestimmter Quellcode zu überprüfen.

Es gibt folgende Möglichkeiten, Unit-Tests für eine Funktion

  1. Übergeben Sie die Eingabe funktionieren und testen Sie die Ausgabe
  2. Übergeben Sie die Eingabe und testen alles, was (Schritte) zu tun, es tut, dass die Eingabe zu manipulieren
  3. -Test, wenn sein Aufruf etwas externe Funktion jede Eingabe erhalten & den Stub-Wert als zurückgegebene Objekt/Wert aus dieser externen Funktion

Wenn eine Methode in der Direktive css manipuliert, sollte sie CSS-Klasse innerhalb dieser Methode hinzufügen und entfernen, oder? In Assertions muss nur überprüft werden, ob eine bestimmte Klasse vorhanden ist oder nicht. (In den meisten Fällen, an denen ich arbeitete)

CSS-Datei ist externe Datei und es ist eine Abhängigkeit für Javascript-Quelldatei & es sollte als Abhängigkeiten behandelt werden.

Wo als e2e-Test ist der gleiche Integrationstest, um sicherzustellen, dass alle Integrationsdateien perfekt zusammenarbeiten. Also, wenn wir CSS-Änderungen testen müssen, sollten wir mit e2e überprüfen.

Here ist interessantes Gespräch auf Unit Testing von Miško Hevery. Es ist nicht im Zusammenhang mit CSS, aber im Allgemeinen Unit Testing & über die Handhabung von Abhängigkeiten (17:50)

+0

Es ist nicht möglich, CSS hinzuzufügen oder zu entfernen. Anweisungen laden HTML-Vorlage, die möglicherweise CSS- und postLink-Funktionen haben, müssen die Elemente richtig positionieren. – bhantol

Verwandte Themen