{"id":15785,"date":"2025-09-25T11:03:54","date_gmt":"2025-09-25T11:03:54","guid":{"rendered":"https:\/\/prometteursolutions.com\/blog\/?p=15785"},"modified":"2025-10-16T07:21:57","modified_gmt":"2025-10-16T07:21:57","slug":"angularjs-testen","status":"publish","type":"post","link":"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/","title":{"rendered":"AngularJS Testen"},"content":{"rendered":"<p data-start=\"55\" data-end=\"129\">Willkommen zu diesem praktischen AngularJS-Test-Tutorial f\u00fcr Anf\u00e4nger!<\/p>\n<p data-start=\"131\" data-end=\"362\">Tests sind entscheidend f\u00fcr den Aufbau robuster AngularJS-Anwendungen, doch viele Entwickler finden sie herausfordernd. Dieses Tutorial hat das Ziel, das Testen von Angular-Code mit leicht verst\u00e4ndlichen Beispielen zu vereinfachen.<\/p>\n<p data-start=\"364\" data-end=\"762\">Durch die Anwendung grundlegender Testprinzipien wie Isolation und Mocking werden Sie praktische Erfahrungen im Erstellen wartbarer Tests sammeln, die Probleme schnell erkennen. Am Ende werden Sie \u00fcber die wesentlichen F\u00e4higkeiten verf\u00fcgen, um produktionsreife AngularJS-Anwendungen zu erstellen, die den Anforderungen an Funktionalit\u00e4t, Kompatibilit\u00e4t, Zuverl\u00e4ssigkeit und Leistung gerecht werden.<\/p>\n<p data-start=\"764\" data-end=\"929\">Mit einem Fokus auf Einfachheit und praktischer Anwendbarkeit wird Ihnen dieses AngularJS-Test-Tutorial das Vertrauen geben, fehlerfreie AngularJS-Apps zu erstellen.<\/p>\n<p data-start=\"931\" data-end=\"961\">Also, lassen Sie uns anfangen!<\/p>\n<h2 data-start=\"55\" data-end=\"87\"><strong data-start=\"55\" data-end=\"87\">H\u00e4ufige AngularJS-Test-Tools<\/strong><\/h2>\n<ul data-start=\"89\" data-end=\"316\">\n<li data-start=\"89\" data-end=\"179\">\n<p data-start=\"91\" data-end=\"179\"><strong data-start=\"91\" data-end=\"102\">Cypress<\/strong> \u2013 End-to-End-Test-Framework, das direkt in modernen Browsern ausgef\u00fchrt wird<\/p>\n<\/li>\n<li data-start=\"180\" data-end=\"245\">\n<p data-start=\"182\" data-end=\"245\"><strong data-start=\"182\" data-end=\"191\">Karma<\/strong> \u2013 Test Runner f\u00fcr das Unit-Testing von AngularJS-Code<\/p>\n<\/li>\n<li data-start=\"246\" data-end=\"316\">\n<p data-start=\"248\" data-end=\"316\"><strong data-start=\"248\" data-end=\"262\">Protractor<\/strong> \u2013 End-to-End-Test-Framework f\u00fcr AngularJS-Anwendungen<\/p>\n<\/li>\n<\/ul>\n<h2 data-start=\"318\" data-end=\"366\"><strong data-start=\"318\" data-end=\"366\">AngularJS-Anwendungen \u2013 Wichtige Komponenten<\/strong><\/h2>\n<p data-start=\"368\" data-end=\"665\">Beim Erstellen von AngularJS-Anwendungen arbeiten Entwickler mit mehreren wichtigen Komponenten, die die Struktur und Funktionalit\u00e4t der App ausmachen. Diese Komponenten arbeiten zusammen, um die Logik, Ansichten und zugrunde liegenden Dienste zu erstellen, die die Benutzererfahrung unterst\u00fctzen.<\/p>\n<h3 data-start=\"55\" data-end=\"69\"><strong data-start=\"55\" data-end=\"69\">Controller<\/strong><\/h3>\n<p data-start=\"71\" data-end=\"321\">Sie sind JavaScript-Funktionen, die die Gesch\u00e4ftslogik hinter den Ansichten bereitstellen. Im MVC-Designmuster fungieren Controller als die Steuerungen. Sie verarbeiten Benutzereingaben, manipulieren Daten und entscheiden, welchen Inhalt sie rendern.<\/p>\n<p data-start=\"323\" data-end=\"408\">Entwickler erstellen aktiv Controller, um AngularJS-Scope mit Ansichten zu verbinden.<\/p>\n<h3 data-start=\"410\" data-end=\"423\"><strong data-start=\"410\" data-end=\"423\">Ansichten<\/strong><\/h3>\n<p data-start=\"425\" data-end=\"699\">Entwickler definieren aktiv Ansichten mit HTML, um Daten aus Controllern und Modellen darzustellen. Ansichten nutzen Datenbindung, um sich automatisch zu aktualisieren, wenn sich die Modelldaten \u00e4ndern. Dadurch entf\u00e4llt die Notwendigkeit, Ansichten manuell zu aktualisieren.<\/p>\n<h3 data-start=\"701\" data-end=\"712\"><strong data-start=\"701\" data-end=\"712\">Modelle<\/strong><\/h3>\n<p data-start=\"714\" data-end=\"962\">Diese k\u00f6nnen einfache JavaScript-Objekte sein oder aus einem Persistenzframework wie Firebase abgeleitet werden. Entwickler erstellen aktiv Modellobjekte und -strukturen, um die Anwendungsdatenkonzepte darzustellen, die f\u00fcr Ansichten geeignet sind.<\/p>\n<p data-start=\"964\" data-end=\"975\">Dienste<\/p>\n<p data-start=\"964\" data-end=\"975\">Entwickler erstellen aktiv AngularJS-Dienste, um Aufgaben wie API-Aufrufe zu erledigen, ohne den Controller-Code zu \u00fcberladen. Dienste k\u00f6nnen in der gesamten Anwendung geteilt werden, was die Flexibilit\u00e4t und Wiederverwendbarkeit erh\u00f6ht.<\/p>\n<h3 data-start=\"55\" data-end=\"65\"><strong data-start=\"55\" data-end=\"65\">Module<\/strong><\/h3>\n<p data-start=\"67\" data-end=\"279\">Entwickler definieren aktiv Module mit ng-app, die die Anwendungsabh\u00e4ngigkeiten und die Einstiegskomponente festlegen. Dies f\u00f6rdert die Organisation und gew\u00e4hrleistet eine klare Trennung der Verantwortlichkeiten.<\/p>\n<p data-start=\"281\" data-end=\"598\">Wenn Entwickler diese Schl\u00fcsselfunktionen nutzen, k\u00f6nnen sie aktiv robuste AngularJS-Webanwendungen mit einer sauberen Trennung der Verantwortlichkeiten zwischen den verschiedenen Schichten erstellen. Die Flexibilit\u00e4t der AngularJS-Komponenten erm\u00f6glicht es, komplexe, datengetriebene Benutzererlebnisse zu gestalten.<\/p>\n<h3 data-start=\"55\" data-end=\"84\"><strong data-start=\"55\" data-end=\"84\">Unit-Testing in AngularJS<\/strong><\/h3>\n<p data-start=\"86\" data-end=\"284\">Das Unit-Testing in AngularJS ist entscheidend f\u00fcr den Aufbau hochwertiger Anwendungen. Es stellt sicher, dass einzelne Komponenten wie Controller, Direktiven und Dienste wie erwartet funktionieren.<\/p>\n<p data-start=\"286\" data-end=\"446\">Unit-Testing erkennt Fehler fr\u00fchzeitig, erm\u00f6glicht eine sichere Refaktorierung des Codes und vereinfacht die Integration von Code aus verschiedenen Entwicklern.<\/p>\n<p data-start=\"448\" data-end=\"664\">Bevor eine AngularJS-Anwendung als produktionsbereit betrachtet werden kann, sollte sie gr\u00fcndlichem Unit-Testing unterzogen werden. Dies erkennt Probleme im Code bereits in der fr\u00fchesten Phase des Entwicklungszyklus.<\/p>\n<p data-start=\"666\" data-end=\"973\">Robustes Unit-Testing f\u00fchrt zu Anwendungen, die zuverl\u00e4ssiger, besser optimiert und st\u00e4rker an den gesch\u00e4ftlichen Anforderungen ausgerichtet sind. Es erm\u00f6glicht auch eine schnelle Diagnose und Behebung von Fehlern. Unit-getesteter Code gibt den Nutzern zudem mehr Vertrauen in die F\u00e4higkeiten der Anwendung.<\/p>\n<p data-start=\"55\" data-end=\"99\"><strong data-start=\"55\" data-end=\"99\">Grundlagen des Unit-Testing in AngularJS<\/strong><\/p>\n<p data-start=\"101\" data-end=\"308\">Beim Schreiben von Unit-Tests f\u00fcr deinen AngularJS-Code sorgt das Befolgen grundlegender Prinzipien daf\u00fcr, dass deine Testsuite robust, wartbar und nachhaltig bleibt, w\u00e4hrend sich deine App weiterentwickelt:<\/p>\n<ul data-start=\"310\" data-end=\"346\">\n<li data-start=\"310\" data-end=\"346\">\n<p data-start=\"312\" data-end=\"346\">Isolierung von Abh\u00e4ngigkeiten:<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"348\" data-end=\"553\">Jeder Unit-Test sollte eine spezifische Komponente isoliert testen, ohne auf andere Module oder externe Abh\u00e4ngigkeiten angewiesen zu sein. Verwende Mocks, Spione und Stubs, um Abh\u00e4ngigkeiten zu simulieren.<\/p>\n<ul data-start=\"555\" data-end=\"588\">\n<li data-start=\"555\" data-end=\"588\">\n<p data-start=\"557\" data-end=\"588\">Arrange, Act, Assert (AAA):<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"590\" data-end=\"800\">Strukturiere deinen Test in 3 klar definierte Abschnitte \u2013 arrangiere Testdaten\/Inputs, f\u00fchre die Logik aus, die getestet werden soll (Act), und stelle sicher, dass die erwartete Ausgabe erzeugt wurde (Assert).<\/p>\n<ul data-start=\"802\" data-end=\"832\">\n<li data-start=\"802\" data-end=\"832\">\n<p data-start=\"804\" data-end=\"832\">Eine Assertion pro Test:<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"834\" data-end=\"1018\">Jeder Testfall sollte ein Verhalten oder eine Ausgabe validieren, um es einfach zu machen, herauszufinden, was fehlgeschlagen ist. Vermeide Assertions, die mehrere Ausgaben \u00fcberpr\u00fcfen.<\/p>\n<ul data-start=\"1020\" data-end=\"1049\">\n<li data-start=\"1020\" data-end=\"1049\">\n<p data-start=\"1022\" data-end=\"1049\">Mache Tests unabh\u00e4ngig:<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1051\" data-end=\"1279\">Schreibe Testf\u00e4lle, die ihre eigenen Testdaten einrichten, damit sie unabh\u00e4ngig ausgef\u00fchrt werden k\u00f6nnen und nicht von der Reihenfolge der Ausf\u00fchrung abh\u00e4ngen. Dies ist besonders hilfreich, wenn Tests parallel ausgef\u00fchrt werden.<\/p>\n<ul data-start=\"1281\" data-end=\"1315\">\n<li data-start=\"1281\" data-end=\"1315\">\n<p data-start=\"1283\" data-end=\"1315\">Halte Tests kurz und lesbar:<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"55\" data-end=\"202\">Zerlege umfangreiche Testf\u00e4lle in kleinere Hilfsfunktionen, die jeweils ein einzelnes Verhalten oder eine Untereinheit einer Komponente testen.<\/p>\n<p data-start=\"204\" data-end=\"407\">Das Befolgen dieser grundlegenden Richtlinien stellt sicher, dass deine AngularJS-Unit-Test-Suite robust bleibt und im Laufe der Zeit leicht erweiterbar ist, w\u00e4hrend die Komplexit\u00e4t der Anwendung w\u00e4chst.<\/p>\n<h3 data-start=\"55\" data-end=\"96\"><strong data-start=\"55\" data-end=\"96\">Einrichten Ihrer Entwicklungsumgebung<\/strong><\/h3>\n<p data-start=\"98\" data-end=\"129\">Folge einfach diesen Schritten:<\/p>\n<ul>\n<li style=\"text-align: left;\" data-start=\"133\" data-end=\"230\">Installiere Node.js auf deinem Computer. Dies ist das Framework, auf dem wir aufbauen werden.<\/li>\n<li style=\"text-align: left;\" data-start=\"234\" data-end=\"384\">\u00d6ffne deinen bevorzugten Code-Editor. Wir empfehlen Visual Studio Code, Brackets oder Sublime Text. Jeder dieser Editor funktioniert hervorragend.<\/li>\n<li style=\"text-align: left;\" data-start=\"388\" data-end=\"528\">Erstelle einen neuen Ordner namens &#8220;unit-testing&#8221; auf deinem Computer mit dem Befehl <code data-start=\"477\" data-end=\"484\">mkdir<\/code>. Hier wirst du deine Testdateien speichern.<\/li>\n<li style=\"text-align: left;\" data-start=\"532\" data-end=\"626\">\u00d6ffne den &#8220;unit-testing&#8221;-Ordner in deinem Code-Editor und \u00f6ffne ein Terminalfenster darin.<\/li>\n<\/ul>\n<p>Erstelle package.json<\/p>\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\" style=\"text-align: left;\">\n<p>npm initAngular installieren:<\/p>\n<p>npm I angular \u2013saveKarma installieren:<\/p>\n<p>npm i -g karma \u2013save -devJasmine installieren:<\/p>\n<p>npm I karma-jasmine jasmine-core \u2013save -devAngular-Mocks installieren:<\/p>\n<p>npm I angular-mocks \u2013save -devKarma Chrome-Browser installieren:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\">\n<p>npm I karma-chrome-launcher \u2013save-dev<\/p>\n<p>\u00b7\u00a0 Erstellen Sie in Ihrem Unit-Testing-Ordner zwei neue Ordner mit den Namen \u201eapp\u201c und \u201etest\u201c.<\/p>\n<p>\u00b7\u00a0 Erstellen Sie anschlie\u00dfend im Unit-Testing-Ordner eine neue Datei mit dem Namen karma.config.js.<\/p>\n<p>\u00b7\u00a0 \u00d6ffnen Sie karma.config.js in Ihrem Code-Editor und geben Sie \u201ekarma init\u201c ein. Dadurch wird ein leeres Repository mit einigen Standardeinstellungen initialisiert.<\/p>\n<p>\u00b7\u00a0 Es werden Ihnen einige Fragen zur Konfiguration von Karma gestellt. Beantworten Sie diese entsprechend Ihren W\u00fcnschen. Die Standardeinstellungen sind ebenfalls in Ordnung.<\/p>\n<h2 data-start=\"55\" data-end=\"118\"><strong data-start=\"55\" data-end=\"118\">End-to-End-Testing in AngularJS mit Protractor oder Cypress<\/strong><\/h2>\n<p data-start=\"120\" data-end=\"349\">End-to-End (E2E)-Testing simuliert, wie ein echter Benutzer mit deiner Anwendung von Anfang bis Ende interagieren w\u00fcrde. Es geht \u00fcber das Unit-Testing hinaus, indem es sicherstellt, dass alle Komponenten richtig zusammenarbeiten.<\/p>\n<p data-start=\"351\" data-end=\"564\">Unit-Tests sind begrenzt, weil sie nur einzelne Teile des Codes isoliert bewerten. E2E-Testing ist wichtig, um Probleme zu erkennen, die auftreten, wenn diese Bausteine in vollst\u00e4ndige Workflows integriert werden.<\/p>\n<p data-start=\"566\" data-end=\"807\">Zum Beispiel k\u00f6nnten Unit-Tests \u00fcberpr\u00fcfen, ob ein Login-Formular und eine Datenbankabfrage wie erwartet funktionieren. Aber E2E-Testing meldet sich mit echten Zugangsdaten an, klickt durch die Anwendung, ruft tats\u00e4chliche Daten ab und mehr.<\/p>\n<p data-start=\"809\" data-end=\"1153\">E2E-Testing gibt dir die Sicherheit, dass deine Anwendung unter realen Bedingungen reibungslos funktioniert. Es findet L\u00fccken, die zwischen Unit- und Integrationstests liegen. E2E-Testing richtig zu machen ist entscheidend, um qualitativ hochwertige Software zu liefern, die die Gesch\u00e4fts- und Benutzeranforderungen von Anfang bis Ende erf\u00fcllt.<\/p>\n<h2 data-start=\"55\" data-end=\"91\"><strong data-start=\"55\" data-end=\"91\">Vorteile des End-to-End-Testings<\/strong><\/h2>\n<p data-start=\"93\" data-end=\"157\">Umfassendes End-to-End-Testing bietet mehrere wichtige Vorteile:<\/p>\n<ul data-start=\"159\" data-end=\"762\">\n<li data-start=\"159\" data-end=\"233\">\n<p data-start=\"161\" data-end=\"233\">Erkennt mehr Fehler fr\u00fchzeitig, was zu hochwertigerer Software f\u00fchrt<\/p>\n<\/li>\n<li data-start=\"234\" data-end=\"342\">\n<p data-start=\"236\" data-end=\"342\">Stellt sicher, dass alle Komponenten reibungslos zusammenarbeiten, wodurch das Vertrauen gest\u00e4rkt wird<\/p>\n<\/li>\n<li data-start=\"343\" data-end=\"422\">\n<p data-start=\"345\" data-end=\"422\">Modelliert echte Benutzer-Workflows, was die Benutzererfahrung verbessert<\/p>\n<\/li>\n<li data-start=\"423\" data-end=\"499\">\n<p data-start=\"425\" data-end=\"499\">Spart Zeit und Geld, indem Probleme fr\u00fcher statt sp\u00e4ter behoben werden<\/p>\n<\/li>\n<li data-start=\"500\" data-end=\"590\">\n<p data-start=\"502\" data-end=\"590\">F\u00f6rdert die Zusammenarbeit zwischen Teams, die an verschiedenen Komponenten arbeiten<\/p>\n<\/li>\n<li data-start=\"591\" data-end=\"662\">\n<p data-start=\"593\" data-end=\"662\">Automatisiert wiederholende Tests, was die Produktivit\u00e4t steigert<\/p>\n<\/li>\n<li data-start=\"663\" data-end=\"762\">\n<p data-start=\"665\" data-end=\"762\">Beschleunigt die Markteinf\u00fchrungszeit, indem M\u00e4ngel vor der Ver\u00f6ffentlichung reduziert werden<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"764\" data-end=\"1049\">E2E-Testing liefert robustere, zuverl\u00e4ssigere Software, die den Gesch\u00e4fts- und Benutzeranforderungen gerecht wird. Es validiert die Qualit\u00e4t von Anfang bis Ende \u00fcber die gesamte Anwendung. Die Investition in E2E-Testing zahlt sich durch eine schnellere Lieferung besserer Software aus.<\/p>\n<h3><strong>Testumgebung mit Protractor und Cypress einrichten<\/strong><\/h3>\n<p>Cypress f\u00fcr E2E-Tests einrichten<\/p>\n<p>Erstellen Sie einen neuen Projektordner und initialisieren Sie ihn:<\/p>\n<p>npm init<\/p>\n<p>Installieren Sie Cypress im Projektordner:<\/p>\n<p>npm install cypress &#8211;save-dev<\/p>\n<p>Oder mit Yarn:<\/p>\n<p>yarn add cypress &#8211;dev<\/p>\n<p>Dadurch wird die neueste Version von Cypress (zum Zeitpunkt der Erstellung dieses Artikels Version 12.11.0) lokal als Entwicklungsabh\u00e4ngigkeit installiert.<\/p>\n<p>Und das war\u2019s! Nachdem Cypress installiert ist, k\u00f6nnen Sie nun End-to-End-Tests f\u00fcr Ihre Anwendung im neuen Projekt erstellen und ausf\u00fchren.<\/p>\n<p>End-to-End-Tests mit Protractor oder Cypress erstellen und ausf\u00fchren<br \/>\nBest Practices f\u00fcr End-to-End-Tests in AngularJS mit Protractor oder Cypress<\/p>\n<p>Protractor f\u00fcr E2E-Tests installieren<\/p>\n<p>Voraussetzung: Node.js muss installiert sein.<\/p>\n<p>1. \u00d6ffnen Sie ein Terminal und geben Sie Folgendes ein:<\/p>\n<p>npm install -g protractor<\/p>\n<p>2. Dadurch werden zwei Kommandozeilentools installiert:<\/p>\n<p>&#8211; protractor \u2013 Der Testrunner<\/p>\n<p>&#8211; webdriver-manager \u2013 Verwaltet den Selenium-Webtreiber<\/p>\n<p>3. \u00dcberpr\u00fcfen Sie die Installation mit:<\/p>\n<p>protractor &#8211;version<\/p>\n<p>Dadurch wird die neueste Protractor-Version global auf Ihrem System installiert. Der Testrunner und der Selenium-Manager stehen nun \u00fcber die Kommandozeile zur Verf\u00fcgung, um mit dem End-to-End-Test Ihrer Anwendung zu beginnen.<\/p>\n<p data-start=\"55\" data-end=\"89\"><strong data-start=\"55\" data-end=\"89\">Integrationstests in AngularJS<\/strong><\/p>\n<p data-start=\"91\" data-end=\"235\">Integrationstests validieren, dass verschiedene Einheiten oder Komponenten einer Anwendung korrekt zusammenarbeiten, wenn sie kombiniert werden.<\/p>\n<p data-start=\"237\" data-end=\"459\">Sie unterscheiden sich vom Unit-Testing, das sich auf das Testen einzelner Einheiten in Isolation konzentriert. Und sie unterscheiden sich vom End-to-End (E2E) Testing, das gesamte Benutzer-Workflows in der App nachbildet.<\/p>\n<p data-start=\"461\" data-end=\"698\">Stattdessen best\u00e4tigt das Integrationstesting, dass die Interaktionen zwischen integrierten Einheiten wie erwartet funktionieren. Zum Beispiel kann es testen, ob die UI-Schicht erfolgreich Daten von einem API-Endpunkt abruft und anzeigt.<\/p>\n<p data-start=\"700\" data-end=\"1060\">W\u00e4hrend Unit-Tests also einzelne Module untersuchen und E2E-Tests die gesamten Abl\u00e4ufe \u00fcberpr\u00fcfen, konzentriert sich das Integrationstesting auf die \u00dcberpr\u00fcfung der Verbindungen zwischen integrierten Komponenten. Es stellt sicher, dass Einheiten korrekt zusammenarbeiten, auch wenn sie auf Netzwerke, Datenbanken oder andere externe Ressourcen angewiesen sind.<\/p>\n<h3 data-start=\"55\" data-end=\"136\"><strong data-start=\"55\" data-end=\"136\">Einrichten der Testumgebung und Schreiben und Ausf\u00fchren von Integrationstests<\/strong><\/h3>\n<p data-start=\"138\" data-end=\"175\">Einrichten eines Angular-Projekts<\/p>\n<h4 data-start=\"177\" data-end=\"191\"><strong data-start=\"177\" data-end=\"191\">Schritt 1.<\/strong><\/h4>\n<p data-start=\"193\" data-end=\"305\">Um ein neues Angular-Projekt zu erstellen, gib den folgenden Befehl in dein Terminal oder die Kommandozeile ein:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-bash\">ng new angular-todo-app<br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"344\" data-end=\"420\">Ersetze \u201eangular-todo-app\u201c durch den Namen, den du f\u00fcr deine App bevorzugst.<\/p>\n<p data-start=\"422\" data-end=\"520\">Dr\u00fccke danach die Eingabetaste. Warte einen Moment, w\u00e4hrend Angular dein neues Projekt einrichtet.<\/p>\n<h4 data-start=\"522\" data-end=\"536\"><strong data-start=\"522\" data-end=\"536\">Schritt 2.<\/strong><\/h4>\n<p data-start=\"538\" data-end=\"682\">Jetzt hast du dein neues Projekt. Es kommt mit dem integrierten Test-Tool von Angular. Dies erm\u00f6glicht direktes Testen ohne weitere Einrichtung.<\/p>\n<p data-start=\"684\" data-end=\"950\">AngularJS generiert automatisch Testdateien f\u00fcr TypeScript-Komponenten, die mit der Angular CLI erstellt wurden. Navigiere zum Beispiel zu <code data-start=\"823\" data-end=\"848\">app &gt; components &gt; todo<\/code>, und du wirst eine <code data-start=\"868\" data-end=\"892\">todo.component.spec.ts<\/code> Testdatei finden, die der <code data-start=\"919\" data-end=\"938\">todo.component.ts<\/code> entspricht.<\/p>\n<p data-start=\"952\" data-end=\"1083\">Dieses Muster findet sich in jedem Angular-Projekt \u2013 jede Komponente hat eine zugeh\u00f6rige <code data-start=\"1041\" data-end=\"1052\">*.spec.ts<\/code>-Datei, die ihre Tests enth\u00e4lt.<\/p>\n<p data-start=\"1085\" data-end=\"1221\">F\u00fcr unseren Integrationstest werden wir die Standarddatei <code data-start=\"1143\" data-end=\"1166\">app.component.spec.ts<\/code> nutzen, die Angular im Root-Ordner des Apps generiert.<\/p>\n<p data-start=\"1223\" data-end=\"1406\">Diese Spec-Datei ist mit der Hauptdatei <code data-start=\"1263\" data-end=\"1281\">app.component.ts<\/code> verbunden und erm\u00f6glicht es uns, Tests zu schreiben, die Integrationspunkte mit anderen Diensten und Komponenten validieren.<\/p>\n<p data-start=\"1408\" data-end=\"1585\">Angular k\u00fcmmert sich um die Verkabelung der Testumgebung f\u00fcr uns in <code data-start=\"1476\" data-end=\"1499\">app.component.spec.ts<\/code>, was es zu einem gro\u00dfartigen Ausgangspunkt f\u00fcr unseren ersten Integrationstest macht.<\/p>\n<\/div>\n<p><strong>Schritt 3: Testsuite erstellen und einrichten<\/strong><\/p>\n<p>\u00d6ffnen Sie die Datei app.component.specs.ts, in der Sie eine neue Testsuite erstellen. Verwenden Sie die folgenden Codes:<\/p>\n<p>describe(&#8216;TodoList Integration&#8217;, () =&gt; {<\/p>\n<p>let component: AppComponent;<\/p>\n<p>let fixture: ComponentFixture&lt;AppComponent&gt;;<\/p>\n<p>let service: TodoService;<\/p>\n<p>beforeEach(async () =&gt; {<\/p>\n<p>await TestBed.configureTestingModule({<\/p>\n<p>imports: [FormsModule],<\/p>\n<p>declarations: [AppComponent, TodoComponent],<\/p>\n<p>providers: [<\/p>\n<p>{<\/p>\n<p>provide: TodoService,<\/p>\n<p>useValue: {<\/p>\n<p>getTasks: () =&gt; {<\/p>\n<p>return dummyTodos;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>]<\/p>\n<p>}).compileComponents();<\/p>\n<p>fixture = TestBed.createComponent(AppComponent);<\/p>\n<p>component = fixture.componentInstance;<\/p>\n<p>service = TestBed.inject(TodoService);<\/p>\n<p>});<\/p>\n<p>});<\/p>\n<p>const dummyTodos = [<\/p>\n<p>{<\/p>\n<p>id: 1,<\/p>\n<p>title: &#8216;Todo 1&#8217;,<\/p>\n<p>completed: false<\/p>\n<p>},<\/p>\n<p>{<\/p>\n<p>id: 2,<\/p>\n<p>title: &#8216;Todo 2&#8217;,<\/p>\n<p>completed: false<\/p>\n<p>}<\/p>\n<p>];<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Asynchrones Test-Setup mit beforeEach<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Testmodul konfigurieren und kompilieren<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Komponenten-Fixture und -Instanzen erstellen<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Externe Dummy-Daten zur Wiederverwendung definieren<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Injections mit TestBed.inject abrufen<\/p>\n<h4>Schritt 4.<\/h4>\n<p>it(&#8216;sollte Aufgaben vom Dienst laden&#8217;, async(() =&gt; {<\/p>\n<p>fixture.detectChanges();<\/p>\n<p>expect(component.todos.length).toBe(2);<\/p>\n<p>expect(service.getTasks()).toEqual(dummyTodos);<\/p>\n<p>}));<\/p>\n<p>In diesem Test:<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Verwenden Sie `it()`, um den Testfall zu definieren.<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Rufen Sie detectChanges() auf, um die Datenbindung auszul\u00f6sen.<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 \u00dcberpr\u00fcfen Sie die L\u00e4nge des Komponenten-ToDos-Arrays.<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 \u00dcberpr\u00fcfen Sie die Gleichheit zwischen Service- und Dummy-Daten.<\/p>\n<p>Einige wichtige Punkte:<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Testname allgemeiner gestaltet.<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Asynchrone Testfunktion genutzt.<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Zuerst wurde die L\u00e4nge als indirekte Pr\u00fcfung gepr\u00fcft.<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Servicedaten direkt mit Dummy-Daten verglichen.<\/p>\n<p>Schritt 5.<\/p>\n<p>Hier f\u00fchren Sie den Test aus.<\/p>\n<p>\/\/ Alle Testsuiten ausf\u00fchren<\/p>\n<p>ng test<\/p>\n<p>\/\/ Eine bestimmte Testdatei ausf\u00fchren<\/p>\n<p>ng test &#8211;include Dateiname<\/p>\n<p>So f\u00fchren Sie die Integrationstests aus:<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 \u00d6ffnen Sie ein Terminal\/eine Eingabeaufforderung.<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Navigieren Sie zum Projektstammverzeichnis.<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 F\u00fchren Sie `ng test` aus, um alle Spezifikationen auszuf\u00fchren.<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Oder f\u00fchren Sie `ng test &#8211;include &lt;Dateiname&gt;` aus, um eine bestimmte Testdatei auszuf\u00fchren.<\/p>\n<p>Angular f\u00fchrt Folgendes aus:<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Richtet die Testumgebung ein.<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 F\u00fchrt die Testf\u00e4lle aus.<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Berichtet die Ergebnisse in der CLI und im browserbasierten Runner.<\/p>\n<p>Einige wichtige Punkte:<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 `ng test` f\u00fchrt standardm\u00e4\u00dfig alle Spezifikationen aus.<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Kann Filtern Sie nach Dateinamen, falls erforderlich.<\/p>\n<p>\u2022\u00a0 \u00a0 \u00a0 Ergebnisausgabe an Terminal und Browser-Test-Runner<\/p>\n<p>Testen von Direktiven in AngularJS<\/p>\n<p>Erkl\u00e4rung der Direktiven in AngularJS<br \/>\nEinrichten der Testumgebung f\u00fcr Direktiven<br \/>\nSchreiben und Ausf\u00fchren von Tests f\u00fcr Direktiven<br \/>\nBest Practices zum Testen von Direktiven in AngularJS<\/p>\n<p data-start=\"55\" data-end=\"109\">AngularJS-Test-Tutorial und AngularJS-Test-Dienste<\/p>\n<p data-start=\"111\" data-end=\"353\">Dienste sind eine der wichtigsten Bausteine in AngularJS-Anwendungen. Sie bieten wiederverwendbare Gesch\u00e4ftslogik, die \u00fcber Komponenten hinweg genutzt werden kann. Aber wie stellst du sicher, dass deine Dienste in AngularJS gut getestet sind?<\/p>\n<p data-start=\"355\" data-end=\"489\">Dieser einfache Abschnitt des AngularJS-Test-Tutorials bietet Best Practices f\u00fcr das Unit-Testing deiner Dienste. Lass uns eintauchen.<\/p>\n<ul>\n<li data-start=\"493\" data-end=\"566\">Richte das AngularJS-Testframework und die Umgebung von Grund auf ein<\/li>\n<li data-start=\"569\" data-end=\"644\">Simuliere effektiv Abh\u00e4ngigkeiten, mit denen deine Dienste interagieren<\/li>\n<li data-start=\"647\" data-end=\"721\">Validiere das Verhalten der Dienste durch gut strukturierte Test-Specs<\/li>\n<li data-start=\"724\" data-end=\"803\">Identifiziere relevante Anwendungsf\u00e4lle, um maximale Abdeckung zu erreichen<\/li>\n<li data-start=\"806\" data-end=\"892\">Organisiere Tests f\u00fcr die Wartbarkeit, w\u00e4hrend sich die Codebasis weiterentwickelt<\/li>\n<li data-start=\"895\" data-end=\"966\">Integriere Dienste mit anderen wichtigen Bausteinen wie Komponenten<\/li>\n<li data-start=\"969\" data-end=\"1034\">Fehlerbehebung, wenn Dienste nicht wie erwartet funktionieren<\/li>\n<li data-start=\"1036\" data-end=\"1345\">Das richtige Testen von Diensten deckt Fehler fr\u00fchzeitig auf und gibt Vertrauen, dass Gesch\u00e4ftsregeln die Datenintegrit\u00e4t durchsetzen. Spare Stunden in der Zukunft, indem du lernst, wie man AngularJS-Dienste richtig testet. Statte dich mit einer gefragten F\u00e4higkeit aus, die zu h\u00f6herer Softwarequalit\u00e4t f\u00fchrt.<\/li>\n<\/ul>\n<p data-start=\"1347\" data-end=\"1632\">Die Konzepte gelten sowohl f\u00fcr Anf\u00e4nger als auch f\u00fcr Entwickler, die bereits AngularJS-Anwendungen gebaut haben. Erfahrene Entwickler k\u00f6nnen diese Best Practices des AngularJS-Testens verwenden, um bestehende Testsuiten zu optimieren. Weitere Informationen findest du auf dieser Seite.<\/p>\n<p data-start=\"1639\" data-end=\"1679\">Testing von Controllern in AngularJS<\/p>\n<p data-start=\"1681\" data-end=\"1928\">Controller sind das R\u00fcckgrat des dynamischen Verhaltens in AngularJS-Anwendungen. Sie verbinden die Benutzeroberfl\u00e4che mit der zugrunde liegenden Logik. Durch gr\u00fcndliches Testen der Controller werden Schnittstellenfehler in der Zukunft verhindert.<\/p>\n<p data-start=\"1930\" data-end=\"2200\">Mit einer zuverl\u00e4ssigen Testsuite kannst du Benutzerinteraktionen simulieren und sicherstellen, dass Controller Daten korrekt transformieren und anzeigen. Dies erm\u00f6glicht es dir, Funktionen selbstbewusst weiterzuentwickeln, da du Regressionen fr\u00fchzeitig erkennen kannst.<\/p>\n<p data-start=\"2202\" data-end=\"2327\">Hier ist ein dedizierter Abschnitt des AngularJS-Test-Tutorials, der die Best Practices f\u00fcr das Testen von Controllern zeigt.<\/p>\n<p>Dienste in AngularJS-Controller einf\u00fcgen<\/p>\n<p>Beim Unit-Test von Controllern m\u00fcssen Sie deren Abh\u00e4ngigkeiten simulieren. Dienste wie $http oder benutzerdefinierte Provider erm\u00f6glichen Controllern die Auslagerung der Gesch\u00e4ftslogik.<\/p>\n<p>Es gibt zwei Standardmethoden, um diese Abh\u00e4ngigkeiten einzuf\u00fcgen und so eine korrekte Aufl\u00f6sung zu gew\u00e4hrleisten:<\/p>\n<p>Inline-Array<\/p>\n<p>Definieren Sie ein Inline-Array mit den Abh\u00e4ngigkeiten \u2013 praktisch f\u00fcr einfache F\u00e4lle:<\/p>\n<p>angular.module(&#8216;myApp&#8217;)<\/p>\n<p>.controller(&#8216;MyController&#8217;, [&#8216;$scope&#8217;, &#8216;MyService&#8217;, function($scope, MyService) {<\/p>\n<p>\/\/ &#8230;<\/p>\n<p>}]);<\/p>\n<p>$inject-Eigenschaft<\/p>\n<p>Oder legen Sie eine $inject-Eigenschaft f\u00fcr die Controller-Funktion fest:<\/p>\n<p>angular.module(&#8216;myApp&#8217;)<\/p>\n<p>.controller(&#8216;MyController&#8217;, MyController);<\/p>\n<p>MyController.$inject = [&#8216;$scope&#8217;, &#8216;MyService&#8217;];<\/p>\n<p>function MyController($scope, MyService) {<\/p>\n<p>\/\/ &#8230;<\/p>\n<p>}<\/p>\n<p>Beide Ans\u00e4tze eignen sich f\u00fcr Mocking in Tests. Der Schl\u00fcssel liegt darin, Abh\u00e4ngigkeiten explizit aufzulisten, anstatt sich auf Inferenz zu verlassen.<\/p>\n<p>So wird sichergestellt, dass Abh\u00e4ngigkeiten korrekt aufgel\u00f6st werden, wenn Code w\u00e4hrend des Build-Prozesses minimiert\/verunstaltet wird \u2013 eine wichtige Best Practice f\u00fcr AngularJS-Tests.<\/p>\n<h2>Fazit unseres AngularJS-Test-Tutorials<\/h2>\n<p>Herzlichen Gl\u00fcckwunsch, wenn Sie unser AngularJS-Test-Tutorial bis hierher gelesen haben. Sie verf\u00fcgen nun \u00fcber die grundlegenden Kenntnisse und F\u00e4higkeiten, um mit der Entwicklung robuster Testsuites f\u00fcr Ihre AngularJS-Anwendungen zu beginnen.<\/p>\n<p>Testen mag zun\u00e4chst entmutigend erscheinen. Doch wer dranbleibt, zahlt sich langfristig in Form von Anwendungsstabilit\u00e4t, schnellerer Bereitstellung und verbesserter Benutzerfreundlichkeit aus. Seien Sie geduldig und vergessen Sie nicht, Best Practices wie Isolation, Mocking und eine \u00fcbersichtliche Testorganisation anzuwenden.<\/p>\n<p>Das war erst der Anfang \u2013 es gibt noch viel mehr zu entdecken, wenn Sie ein erfahrener AngularJS-Testexperte werden. Sie m\u00fcssen sich mit weiteren und tiefergehenden Themen wie Testdirektiven, End-to-End-Testframeworks wie Protractor und Cypress, visuellen Regressionstests und fortgeschrittenen Techniken f\u00fcr knifflige Testszenarien auseinandersetzen.<\/p>\n<p>W\u00e4hrend Sie verschiedene AngularJS-Test-Tutorials durchst\u00f6bern, ist es wichtig, positiv zu bleiben, fr\u00fchzeitig mit dem Testen zu beginnen, regelm\u00e4\u00dfig zu refaktorieren und sich bei Bedarf an andere zu wenden. Kontinuierliches \u00dcben von AngularJS-Tests festigt das Gelernte und st\u00e4rkt Ihr Selbstvertrauen. Sie schaffen das!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Willkommen zu diesem praktischen AngularJS-Test-Tutorial f\u00fcr Anf\u00e4nger! Tests sind entscheidend f\u00fcr den Aufbau robuster AngularJS-Anwendungen, doch viele Entwickler finden sie herausfordernd. Dieses Tutorial hat das Ziel, das Testen von Angular-Code mit leicht verst\u00e4ndlichen Beispielen zu vereinfachen. Durch die Anwendung grundlegender Testprinzipien wie Isolation und Mocking werden Sie praktische Erfahrungen im Erstellen wartbarer Tests sammeln, die [&hellip;]<\/p>\n","protected":false},"author":22,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","om_disable_all_campaigns":false,"footnotes":""},"categories":[1171],"tags":[],"class_list":{"0":"post-15785","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-uncategorized-de"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>AngularJS-Tests: Leitfaden f\u00fcr Anf\u00e4nger zu Unit- und E2E-Tests<\/title>\n<meta name=\"description\" content=\"AngularJS effektiv mit Cypress, Karma &amp; Protractor testen.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AngularJS-Tests: Leitfaden f\u00fcr Anf\u00e4nger zu Unit- und E2E-Tests\" \/>\n<meta property=\"og:description\" content=\"AngularJS effektiv mit Cypress, Karma &amp; Protractor testen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/\" \/>\n<meta property=\"og:site_name\" content=\"blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prometteurSolutions\/timeline\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-25T11:03:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-16T07:21:57+00:00\" \/>\n<meta name=\"author\" content=\"khushi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Iamprometteur\" \/>\n<meta name=\"twitter:site\" content=\"@Iamprometteur\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"khushi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/\"},\"author\":{\"name\":\"khushi\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#\/schema\/person\/fb47fc70cda294112e88ad2fe3c66350\"},\"headline\":\"AngularJS Testen\",\"datePublished\":\"2025-09-25T11:03:54+00:00\",\"dateModified\":\"2025-10-16T07:21:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/\"},\"wordCount\":2653,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#organization\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/\",\"url\":\"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/\",\"name\":\"AngularJS-Tests: Leitfaden f\u00fcr Anf\u00e4nger zu Unit- und E2E-Tests\",\"isPartOf\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#website\"},\"datePublished\":\"2025-09-25T11:03:54+00:00\",\"dateModified\":\"2025-10-16T07:21:57+00:00\",\"description\":\"AngularJS effektiv mit Cypress, Karma & Protractor testen.\",\"breadcrumb\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/prometteursolutions.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AngularJS Testen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#website\",\"url\":\"https:\/\/prometteursolutions.com\/blog\/\",\"name\":\"blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/prometteursolutions.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#organization\",\"name\":\"blog\",\"url\":\"https:\/\/prometteursolutions.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2021\/04\/new-logo.png\",\"contentUrl\":\"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2021\/04\/new-logo.png\",\"width\":211,\"height\":60,\"caption\":\"blog\"},\"image\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/prometteurSolutions\/timeline\/\",\"https:\/\/x.com\/Iamprometteur\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#\/schema\/person\/fb47fc70cda294112e88ad2fe3c66350\",\"name\":\"khushi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f5d7a5663b379d95dac09a4dff12fbe15b82a2dc10db2330219fabb82d3759ce?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f5d7a5663b379d95dac09a4dff12fbe15b82a2dc10db2330219fabb82d3759ce?s=96&d=mm&r=g\",\"caption\":\"khushi\"},\"url\":\"https:\/\/prometteursolutions.com\/blog\/author\/khushi\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AngularJS-Tests: Leitfaden f\u00fcr Anf\u00e4nger zu Unit- und E2E-Tests","description":"AngularJS effektiv mit Cypress, Karma & Protractor testen.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/","og_locale":"en_US","og_type":"article","og_title":"AngularJS-Tests: Leitfaden f\u00fcr Anf\u00e4nger zu Unit- und E2E-Tests","og_description":"AngularJS effektiv mit Cypress, Karma & Protractor testen.","og_url":"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/","og_site_name":"blog","article_publisher":"https:\/\/www.facebook.com\/prometteurSolutions\/timeline\/","article_published_time":"2025-09-25T11:03:54+00:00","article_modified_time":"2025-10-16T07:21:57+00:00","author":"khushi","twitter_card":"summary_large_image","twitter_creator":"@Iamprometteur","twitter_site":"@Iamprometteur","twitter_misc":{"Written by":"khushi","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/#article","isPartOf":{"@id":"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/"},"author":{"name":"khushi","@id":"https:\/\/prometteursolutions.com\/blog\/#\/schema\/person\/fb47fc70cda294112e88ad2fe3c66350"},"headline":"AngularJS Testen","datePublished":"2025-09-25T11:03:54+00:00","dateModified":"2025-10-16T07:21:57+00:00","mainEntityOfPage":{"@id":"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/"},"wordCount":2653,"commentCount":0,"publisher":{"@id":"https:\/\/prometteursolutions.com\/blog\/#organization"},"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/","url":"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/","name":"AngularJS-Tests: Leitfaden f\u00fcr Anf\u00e4nger zu Unit- und E2E-Tests","isPartOf":{"@id":"https:\/\/prometteursolutions.com\/blog\/#website"},"datePublished":"2025-09-25T11:03:54+00:00","dateModified":"2025-10-16T07:21:57+00:00","description":"AngularJS effektiv mit Cypress, Karma & Protractor testen.","breadcrumb":{"@id":"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/prometteursolutions.com\/blog\/de\/angularjs-testen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/prometteursolutions.com\/blog\/"},{"@type":"ListItem","position":2,"name":"AngularJS Testen"}]},{"@type":"WebSite","@id":"https:\/\/prometteursolutions.com\/blog\/#website","url":"https:\/\/prometteursolutions.com\/blog\/","name":"blog","description":"","publisher":{"@id":"https:\/\/prometteursolutions.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/prometteursolutions.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/prometteursolutions.com\/blog\/#organization","name":"blog","url":"https:\/\/prometteursolutions.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prometteursolutions.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2021\/04\/new-logo.png","contentUrl":"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2021\/04\/new-logo.png","width":211,"height":60,"caption":"blog"},"image":{"@id":"https:\/\/prometteursolutions.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/prometteurSolutions\/timeline\/","https:\/\/x.com\/Iamprometteur"]},{"@type":"Person","@id":"https:\/\/prometteursolutions.com\/blog\/#\/schema\/person\/fb47fc70cda294112e88ad2fe3c66350","name":"khushi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prometteursolutions.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f5d7a5663b379d95dac09a4dff12fbe15b82a2dc10db2330219fabb82d3759ce?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f5d7a5663b379d95dac09a4dff12fbe15b82a2dc10db2330219fabb82d3759ce?s=96&d=mm&r=g","caption":"khushi"},"url":"https:\/\/prometteursolutions.com\/blog\/author\/khushi\/"}]}},"_links":{"self":[{"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/posts\/15785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/comments?post=15785"}],"version-history":[{"count":2,"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/posts\/15785\/revisions"}],"predecessor-version":[{"id":15793,"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/posts\/15785\/revisions\/15793"}],"wp:attachment":[{"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=15785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=15785"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=15785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}