Unit-tests in ReactJS

  • Themenstarter Themenstarter Fluffy
  • Beginndatum Beginndatum
F

Fluffy

Guest
Hallo,

ich hatte letztens ein hitzige Diskussion mit einem Kollegen bzgl. Tests im Frontendbereich auf Basis von React und Redux.
Zum Testen wurde Mocha, Chai und Enzyme herangezogen.

Es gab 2 Standpunkte:
1. Logik in andere Komponenten Auslagern und diese Komponenten unter test bringen, und die Reactkomponenten so dumm wie möglich halten.
2. Logik in den Komponenten belassen und nur die Komponenten mittels ShallowRendering rendern und dann darüber die Logik testen.
d.h. Businesslogik wird über die Eventhandler getestet.


Beide Sachen haben ihre Vor- und Nachteile.
zB
- Import da keine DI vorhanden ist, es sei denn man fügt noch Factories ein
- Abhängigkeiten von der HTML-struktur einer 3rd Party-Komponenten welche benutzt wird., etc.


Ich würde ganz gerne mal wissen wie Eure Erfahrungen und herangehensweisen bzgl. Unit-tests im Frontend-Bereich sind und Eure Meinung zu oben genannten Punkten.


Es geht hier nicht um einen Integrationstest.
Das kann man mittels SlimerJS,PhantomJS, Selenium, etc. machen .

Gruß

Fluffy

P.s.:
Jester ist mir bekannt, es geht hier auch nicht um den Techstack sondern um das Vorgehen.
 
Zuletzt bearbeitet von einem Moderator:
Ich halte ein Use-Case-basiertes Testing immer noch für am sinnvollsten. Ich habe ja nun bereits für diverse Web-Unternehmen gearbeitet. Dort wo man sich auf Unit-Tests verlassen hat, gab es früher oder später immer Probleme. Dann habe ich ein Unternehmen erlebt, wo für jede Kleinigkeit ganz klare Use Cases definiert wurden und diese wurden dann mit Hilfe von Selenium und ähnlichen Tools, die quasi die Klick-Pfade durchgingen, getestet. Probleme habe ich dort keine erlebt. Unit-Tests wurden lediglich zusätzlich eingesetzt um die Code-Qualität zu sichern.

Das Use-Case-basierte Testing hat den Vorteil, dass es die tatsächliche User-Interaktion simuliert. dadurch wird sichergestellt, dass das, was der User nachher mit der Webapp tut bzw. theoretisch tun kann, auch tatsächlich keine Fehler verursacht. Leider ist es schwierig ein solches Test-Verfahren erst im Nachhinein in ein Projekt einzubringen. Tut man dies allerdings von Anfang an und baut die entsprechenden Tests mit der Webapp zusammen auf, gibt es keine Interaktion, die nicht von den Tests abgedeckt wird. Auch Sicherheitstests lassen sich dadurch leichter unterbringen, wenn man auch Use Cases wie die Manipulation der URL und der Cookies, falsche Eingaben etc. in die Testabläufe einbringt. So erhält man ein wesentlich umfangreicheres Testing als es mit Units üblicherweise gemacht wird.

Natürlich funktioniert diese Art von Tests nur, wenn auch eine User-Interaktion stattfindet. Für vollständig automatisierte Abläufe, wo es eher auf das Zusammenspiel von Software-Komponenten ankommt, sind Unit-Tests eher geeignet. Für Webapps empfehle ich aber mittlerweile aufgrund meiner Erfahrungen eher Use Cases.
 
Zurück
Oben