Ich führe meine kantigen Tests mit Karma durch, meine Anwendung läuft im Browser gut, aber Tests scheitern und ich vermute falsche Einstellungen.
Hier sind die Controller und Tests:
%Vor%Hier ist die Testdatei:
%Vor%Das Karma conf
%Vor%Die Fehlerausgabe
%Vor%Ich frage mich, warum das passiert, ich habe versucht, etwas Dokumentation über die Karma-Initialisierung mit angularjs zu finden. Aber die meisten Dokumente, die ich gefunden habe, sind nur Dummy-Tutorials, die das gleiche Muster wiederholen (wie die Dummy-ToDo-Liste, aber mit Telefonen ...)
Anscheinend kann $ controllerProvide.register den Namen meines Controllers nicht auflösen. Aber Direktivtests funktionieren richtig ...
Danke für Ihre Aufmerksamkeit.
Bearbeiten Anmerkungen: Ich habe den Controller PersonCtrl durch MainCtrl in diesem Thread ersetzt, weil es Leute verwirrte, wo sie suchen sollten. Jetzt MainCtrl ist das einfachste Fehler Beispiel, das ich gefunden habe.
Dieses Problem betrifft nur meine Controller (alle), aber Tests für Services und Richtlinien funktionieren wie erwartet
Ich habe mein Problem gelöst. Ich habe fast eine Woche gebraucht, um herauszufinden, warum das nicht funktionierte.
Ich möchte Sie warnen, dass Karma Stacktrace und Fehlerberichte auch im Debug-Modus keine Hinweise zeigten und hauptsächlich fehlleitend waren . Ich habe Zeit in JavaScript Debugger von Frame zu Frame springen, um zu verstehen, warum meine Controller nicht geladen wurden. (Kontrolle der Angular-Controller registrieren, zeigte, dass es leer war)
Beim Durchsuchen meiner Verzeichnisse habe ich ein * .js gefunden, das nicht in den Index in der Produktion geladen wurde, sondern durch das Globbing-Muster in Tests.
Es war mein alter http_interceptor-Dienst, den ich verschoben habe, aber die Datei nicht gelöscht habe. Durch das Entfernen dieser fehlerhaften Datei wurde das seltsame Karma / Jasmine / Angular-Verhalten behoben.
Lektion gelernt: Vertrauen Sie nicht der Testausgabe (aber was sollte ich dann tun?). Entfernen Sie Dateien, die Sie nicht verwenden / testen.
Danke an alle, die versucht haben, dieses Problem zu lösen.
Ich denke, das Hauptproblem kommt vom Karma conf:
%Vor%Entfernen Sie das * und spezifizieren Sie die Dateien nacheinander in der richtigen Reihenfolge, denn wenn man vor einem anderen geladen wird, kann es brechen.
Bearbeiten: Fügen Sie Ihre Dateien in der gleichen Reihenfolge wie Ihre index.html
hinzuIch frage mich, ob die Fehlermeldung verwirrend ist.
in der Stack-Trace kann ich sehen
%Vor%und aus dem Beispiel scheint es, als ob Sie keine Eigenschaften auf dem Bereich in Ihrem Controller definiert haben.
haben Sie immer noch das Problem, wenn Sie
hinzufügen %Vor%zu Ihrem Controller?
Wenn Sie die neueste eckige verwenden und auch die angular-route-Modul , sollten Sie das angular-route-Skript auch in die Karma-Conf-Datei einfügen:
%Vor%Ich hatte dieses Problem und fügte es der Karma-Datei hinzu, machte den Trick.
Tags und Links angularjs controller testing karma-runner