AngularJS / Karma testing: beforeJeder nicht ausgeführt

8

Ich arbeite an einer TDD für AngularJS (eine andere Geschichte überhaupt) und geriet in eine Situation, in der meine beforeEach-Anrufe anscheinend nicht ausgeführt werden. Ich habe es auf das folgende Beispiel reduziert.

Dies funktioniert, wie die Tatsache zeigt, dass die console.log-Nachrichten in beforeEach und beide angezeigt werden:

%Vor%

Dies funktioniert nicht, wie die Tatsache zeigt, dass die console.log-Nachricht in der beforeEach-Datei NICHT angezeigt wird und beim Versuch, $ log.info zu versuchen, fehlschlägt und die folgende Fehlermeldung auslöst: TypeError: Cannot read property 'info' of undefined

%Vor%

Ich verwende Angular 1.3.15, Karma 0.12.31, Jasmin 2.3.4. Wahrscheinlich etwas Offensichtliches, das ich übersehe ...

BEARBEITEN : Michael Radionovs Erklärung ist sehr hilfreich; Ich verstehe jedoch nicht, warum dieser geänderte Code immer noch denselben Fehler verursacht.

%Vor%

Außerdem scheint der Code in "module ('userApp' ..." nie ausgeführt zu werden ...?

    
JESii 05.07.2015, 23:11
quelle

1 Antwort

5

Der Grund dafür, dass Ihre Protokollnachricht console.log("in beforeEach..."); nicht angezeigt wird, liegt darin, dass sie nicht in beforeEach liegt, sondern in einer anonymen Funktion, die an ein module(..) als Argument übergeben wird, das von angular als Modul betrachtet wird -Hüften. Dieses Modul wird nur ausgeführt, wenn die Injektion stattfindet und Sie gleichzeitig eine Protokollmeldung in beforeEach... erhalten, aber es gibt keine Injektion in Ihrem Test, so dass es nie passiert. beforeEach wird trotzdem ausgelöst, du hast console.log einfach nicht an die richtige Stelle gesetzt; es wird funktionieren:

%Vor%

Es scheint auch, dass Sie vergessen haben, spottes $log in Ihre Testsuite zu injizieren, Ihre $log Variable erhält niemals einen Wert, so bleibt sie undefiniert, wie der Fehler angibt.

%Vor%

Siehe den Plott: Ссылка

Dokumente:

Michael Radionov 06.07.2015, 09:42
quelle

Tags und Links