AngularJS-Winkelmesser-Tests - sollten E2E-Tests Leuchten haben?

8

Es gibt eine Menge Fragen, wie man HTTP-Antworten in Winkelmesser-Tests vortäuscht. Wie dies zu tun ist, ist nicht die Frage, sollten wir dies tun, ist die Frage.

Ссылка

Ich bin seit über vier Jahren QS-Ingenieur und die meisten meiner automatisierten Testerfahrungen befassen sich sowohl mit Low-Level- (Unit-) Tests von Controllern, Modellen usw. als auch mit High-Level- (Integrations-) Tests von Gesamtsystemen. In meiner Ruby Welterfahrung verwendeten wir Capybara für Integrationstests zusammen mit Blueprint und Factorygirl (für verschiedene Projekte) um Datenbankeinträge zu erstellen. Das war unsere Integration / E2E-Tests.

Ich bin erst vor kurzem in ein Javascript-Team mit AngularJS umgezogen. Das ursprüngliche integrierte Test-Framework (jetzt veraltet) hatte ein Backend-Modul, das für unsere Bedürfnisse geeignet erschien. Winkelmesser ist jetzt der Standard. Erst nachdem der Winkelmesser gedampft wurde, habe ich das Spiel der Geräte für E2E-Tests gehört. Viele Posts weisen darauf hin, dass E2E-Tests den gesamten Stack testen sollten, daher sollten Backends nicht verspottet und zugänglich sein.

Sollten Integrationstests Geräte verwenden und warum?

    
jonh 23.12.2013, 19:12
quelle

4 Antworten

2

Hier gibt es ein Vokabularproblem. Das sogenannte "e2e" -Testen in der Angular-Welt hat nichts mit Ende-zu-Ende-Tests zu tun. Es ist ein Ende-zu-Ende des UI-Teils nur, was bedeutet, dass kein e2e-Test überhaupt. Es ist UI-Test.

Gojko Adzic, in "spec by example" Buch, empfiehlt, funktionale, Fixture-basierte Tests "unter dem Deckmantel der Anwendung" zu tun, d. h. ohne den UI-Teil.

Um Ihre Frage zu beantworten:

- Sollten UI-Tests eine Fixture haben? Nein, verwenden Sie Mocks oder Stubs

-Haben Backend-Tests Fixture? Ja

    
bdavidxyz 23.01.2014 16:45
quelle
1

Sie stellen 2 Fragen - über die e2e-Tests und die Integrationstests . :)

Der e2e-Test testet, zumindest in Angulars Welt, Ihre vollständige Anwendung, da ein echter Benutzer damit interagieren kann. Dies beinhaltet das Testen Ihrer Backend-Anfrage und -Antwort. Wenn dies jedoch langsam abläuft und Ressourcen benötigt, ist es sinnvoll, zum Testen auf eine kleinere (oder sogar falsche) Version Ihres Backends umzusteigen.

Bei dem Integrationstest handelt es sich um einen Teil Ihres Codes und bei Komponententest um einzelne Einheiten. Beide Male können einige oder alle Abhängigkeiten verspottet werden, um die Tests zu isolieren.

In allen Fällen kann es nützlich sein, Fixtures oder Mocks zu verwenden.

Siehe meine Antwort hier für detailliertere Informationen Diskussion von Anwendungsfällen, Vorteilen und Einschränkungen von Karma und Winkelmesser.

    
Dmitri Zaitsev 14.04.2015 16:45
quelle
0

Ja, wir benutzen ngMockE2E, um das Backend zu verspotten, dann zeigen wir einige Helfer dem Fensterobjekt an, so dass wir verschiedene Schein-Datenzustände erzeugen können. Wir verwenden auch sinon, um eine bestimmte Zeit für das Testen der Datumsempfindungs-UI zu erzwingen, so dass alle neuen Date () - Aufrufe zurückgeben, was Sie wollen

    
user1750709 31.12.2013 12:44
quelle
0

Ich stehe hier mit einem persönlichen Code-Projekt vor demselben Problem. Ich verwende den MEAN-Stack und meine Lösung wird sein:

  1. Verwenden Sie Grunt, um die Tests auszuführen.
  2. Bevor Sie den Node-Server starten, verwenden Sie die mongoose-Fixtures, um die Mongodb-Test-Db ( Ссылка )
  3. Starten Sie den Node-Server mit einem Parameter, damit er die test db verwendet.

Sie könnten etwas wie diese Methode machen, wenn Sie auf einem anderen Stapel sind, obwohl Grunt als allgemeiner Job-Läufer sehr hilfreich ist.

    
ben.tiberius.avery 05.08.2014 11:39
quelle