Cypress, ein robuster automatisierter Testläufer für Browser-basierte Anwendungen, unterstützt jetzt Komponententests. In diesem Artikel wird die Integration von Cypress-Komponenten-Tests in eine große VUE-Anwendung integriert, die Best Practices hervorhebt und gemeinsame Herausforderungen anbietet. Unser Team, das zuvor Scherz- und VUE-Test-Utils verwendete, wechselte für seine Browser-basierte Testumgebung und nahtlose Integration mit vorhandenen End-to-End-Tests in Cypress.
Hinweis: Dieser Artikel spiegelt die Cypress 8 -Funktionalität wider. Erwarten Sie potenzielle Änderungen in zukünftigen Updates.
Betrachten Sie eine Komponente "Datenschutzrichtlinie" mit einem Titel, einer Körper- und Anerkennungstaste. Wenn Sie auf die Schaltfläche klicken, wird ein "Bestätigungs" -Ereignis ausgeht. Ein Cypress -Komponententest könnte so aussehen:
import {mont} aus '@Cypress/Vue'; privacypolicynotice von './privacypolicynotice.vue'; beschreiben ('privacypolicynotice', () => { it ('rendert den Titel', () => { montage (privacypolicynotice); Cy.Contains ('H1', 'Datenschutzrichtlinie'). sollte ('be. }); It ('emittiert ein "Bestätigungs" -Ereignis auf der Schaltfläche Klick', () => { montage (privacypolicynotice); Cy.Contains ('Taste', '/^ok/') .klicken() .vue () .then ((Wrapper) => { erwarten (wrapper.emitt ('bestätigen')). to.have.length (1); }); }); });
Dieser Test überprüft sowohl die Elemente der Benutzeroberfläche (UI) als auch die Ereignisse der Entwicklerschnittstelle (API), wobei die Komponentenstruktur und -zugrenzungsfunktion implizit getestet werden. Wenn Sie beispielsweise die Taste gegen eine DIV austauschen, wird die Zugänglichkeitsprobleme sofort hervorgehoben.
Unsere Teststrategie unterscheidet zwischen:
Insbesondere Komponententests konzentrieren sich auf die Überprüfung der erwarteten Ereignisse (Entwicklervertrag) und die UI -Statusreflexion (Benutzervertrag). Sie dienen auch als wertvolle Komponentendokumentation.
Während Scherz- und VUE -Test -Utils häufig für Komponententests verwendet werden, bietet Cypress Vorteile, indem Tests in einer realen Browserumgebung ausgeführt werden. Dies bietet visuelle Feedback, Debugging -Funktionen und realistische Browser -API -Interaktion. Cypress nutzt VUE-Test-Utils für Komponentenmontage- und Framework-spezifische Behauptungen.
Unsere große Vue 2 -Anwendung mit Vuetify stellte mehrere Herausforderungen vor:
__cy_root
).!(node_modules)**/*.spec.js
) wurde in cypress.json
verwendet, um Testdateien neben Komponenten ohne irrelevante Dateien zu finden.cy.vue()
) vereinfacht den Zugriff auf den Vue -Test -Utils -Wrapper für Behauptungen.Während sich zunächst auf Nebenschlungen (z. B. intermittierende Fehlern) begegnen, überwiegen die Vorteile die Herausforderungen. Der konsistente Testansatz über verschiedene Ebenen und die Fähigkeit, Komponenten isoliert visuell zu entwickeln und zu testen, sind signifikante Vorteile. Es wird empfohlen, einfache, weniger abhängige Komponenten für Ersttests zu wählen.
Cypress-Komponenten-Tests bieten einen robusten und benutzerfreundlichen Ansatz, der vorhandene End-to-End-Tests ergänzt. Die integrierte Natur von Cypry vereinfacht den Gesamt -Testprozess, während sie mit mehreren Werkzeugen (VUE -Test -Utils, Cypress, Mokka, Chai usw.) vertraut werden müssen. Die verbesserte Lesbarkeit der Test und die erhöhte Testabdeckung in unserem Team unterstreichen seine Effektivität.
Das obige ist der detaillierte Inhalt vonTesten von Vue -Komponenten mit Zypressen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!