Ich habe eine angularjs App mit einigen Direktiven, die jquery und Bootstrap-Komponenten verwenden. Also, um die Richtlinien zu testen, habe ich die folgende Reihenfolge der Dateien in karma.unit.conf.js definiert:Karma Runner> Laden bootstrap.js vor angular und angular-mocks wirft Ausnahme
files = [
JASMINE,
JASMINE_ADAPTER,
'app/components/jquery/jquery.js',
'app/scripts/vendor/bootstrap.js',
'app/components/angular/angular.js',
'app/components/angular-mocks/angular-mocks.js',
'app/components/angular-ui/build/angular-ui.js',
'app/scripts/app.js',
'app/scripts/**/*.js',
'test/spec/unit/**/*.js'
];
Wenn ich zum ersten Mal AngularJS und Winkel Mocks laden und dann jquery und Bootstrap, die Tests laufen und scheitern, weil angular eine eigene jQLite verwendet. Aber wenn ich die Reihenfolge ändern, wie ich schrieb hier oben, dann ist dies, was ich bekommen:
Edit:
Ich habe festgestellt, dass es nicht jQuery ist das, was die Ausnahme verursacht ... es ist bootstrap.js . Wenn ich die Zeile bootstrap.js kommentiere, werden die Tests ausgeführt (und fehlschlagen wie erwartet, weil die Bootstrap-Komponenten nie geladen wurden). Wenn ich oben laden Bootstrap als (oder an jedem anderen Ort vor den Tests), dann bekomme ich diese:
PhantomJS 1.8 (Linux) Directive: tkModal should make hidden element visible FAILED[39m
at /home/ir/work/campari/app/components/jquery/jquery.js:1763
at /home/ir/work/campari/app/components/jquery/jquery.js:2833
at /home/ir/work/campari/app/components/jquery/jquery.js:2850
at /home/ir/work/campari/app/components/jquery/jquery.js:2850
at /home/ir/work/campari/app/components/jquery/jquery.js:2850
...
at /home/ir/work/campari/app/components/jquery/jquery.js:2850
at /home/ir/work/campari/app/components/jquery/jquery.js:2850
at /home/ir/work/campari/app/components/jquery/jquery.js:2850
at /home/ir/work/campari/app/components/jquery/jquery.js:3656
at /home/ir/work/campari/app/components/jquery/jquery.js:648
at /home/ir/work/campari/app/components/jquery/jquery.js:270
at /home/ir/work/campari/app/components/jquery/jquery.js:3657
at /home/ir/work/campari/app/components/jquery/jquery.js:3664
at /home/ir/work/campari/app/components/angular-mocks/angular-mocks.js:1589
at /home/ir/work/campari/app/components/angular-mocks/angular-mocks.js:1627
Die Linie at /home/ir/work/campari/app/components/jquery/jquery.js:2850
endlos über eine 15k-mal wiederholt, bevor der Test fehlschlägt (so scheint es, zu geschehen, wenn jQuery versucht um die Funktion internalData bei jquery.js auszuführen: 1763).
würde Jede Idee
bearbeitet geschätzt werden:
die Antwort gefunden werden gelöst, es ist ein Bootstrap-Problem in Version 2.3.0 auf 2.3.1 zu aktualisieren war es gelöst. Siehe
Wenn Sie Ihre eigene Frage beantwortet haben, sollten Sie sie tatsächlich als Antwort auf diese Frage einreichen. So wird es nicht im 'unbeantworteten' Bereich angezeigt ;-) –
@TylerEich, zu dieser Zeit konnte ich keine Antworten posten, ich füge es jetzt hinzu – rvignacio