Warum ist Karma weigern, zu dienen mein JSON-Leuchte (die ich verwenden möchte, in meinem Jasmin / angularjs tests)
Wie in diesem stackoverflow-Antwort, es sieht aus wie Karma dienen JSON-Leuchten. Allerdings habe ich damit verbracht, zu viele Stunden versucht es zum laufen zu bringen in meiner Umgebung. Grund: ich mache eckige Tests und zum laden brauchen mock HTTP Ergebnisse in der Prüfung, als Jasmin nicht unterstützt alle globalen setup/teardown mit mock-Servern und Sachen.
In meinem karma-config-Datei, ich bin die Definition einer Vorrichtung wie so:
files: [
//angular
'angular/angular.min.js',
'angular/angular-route.js',
'angular/mock/angular-mocks.js',
//jasmine jquery helper
'jquery-1.10.2.min.js',
'angular/jasmine-jquery.js',
//our app
'../public/js/FooApp.js',
//our tests
'angular/*-spec.js',
//fixtures
{ pattern: 'node/mock/factoryResults.json',
watched: 'true',
served: 'true',
included: 'false' }
]
Bevor ich sogar versuchen, Sie zu verwenden jasmine-jquery.js in meinem Jasmin-test zum laden des JSON, ich sehe karma ersticken zu versuchen, es zu dienen:
...
DEBUG [web-server]: serving: /Users/XXX/FooApp/spec/node/mock/factoryResults.json
Firefox 25.0.0 (Mac OS X 10.8) ERROR
SyntaxError: missing ; before statement
at /Users/XXX/FooApp/spec/node/mock/factoryResults.json:1
...
Hier ist, was factoryResults.json sieht wie folgt aus:
{ "why": "WHY" }
Irgendeine Idee, was hier Los ist? Ich sehe viele Beispiele auf der web-Leute erfolgreich laden von JSON in Jasmin tests über karma Leuchten. Karma kann die Datei sehen, und wenn ich den falschen Weg in meine Leuchte block, ich sehe die Fehlermeldung " es konnten keine Dateien mit meiner Leuchte Muster. Ich habe versucht, die .json Datei in verschiedenen weisen... Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist, dass
'false'
muss ein boolescher Wert sein, nicht einen string.Es ist schon ein Problem zur Validierung der config besser und beheben solche Fehler.
Auch, den Sie schreiben, ein einfaches "json" Präprozessor (ähnlich karma-html2js) wären es gültige JS und setzen Sie die JSON-in einigen globalen Namensraum, so dass Sie halten können die tests synchron...
Brauchte ich auch json-Leuchten in meinem karma-test-suite.
Ich landete genau mit der html2js Präprozessor mit json-Dateien als auch als html.
karma.conf.js:
Dann ist es nur eine Frage der json aus der __html__ global.
z.B.
So, ich hatte eine Menge Probleme mit
jasmine-jquery
und ich bekam eine ziemlich gute Abhilfe.Es ist ein wenig hacky, aber es funktioniert. Im Grunde habe ich nur eine Funktion, zugänglich über das Fenster, dann stapeln Sie die JSON-Leuchten im inneren einen kleinen Schalter:
Dann kann ich nur stub-es inline in der Ansicht:
Boom, tests übergeben, und das Objekt kommt im log:
Nun, es ist zugänglich in meinem test.
Es ist natürlich nicht perfekt oder ideal, aber ich hielt das schlagen seltsam
matchErrors
und die wie mit derjasmine-jquery
plugin, und es ist einfach genug (und schnell) für mich zu fügen Sie in ein paar JSON blockiert und sich zu bewegen.Sie auch sparen Sie sich die Zeit hantieren mit der Konfiguration und änderungen an der
files
für Karma.Jemand irgendwelche bessere Vorschläge oder Glück haben bekommen
jasmine-jquery
zu arbeiten?jasmine-jquery
arbeiten mit der neuesten version. Ironischerweise, Ihre github.com/velesin/jasmine-jquery#json-fixtures - Methode geschrieben, um verwendet werden, fast genau die gleiche wie meine kleine hack-Methode oben vorgeschlagen. Ich würde empfehlen, sich in, dass, anstatt zu versuchen, andere Bibliotheken.