J'ai une application AngularJS mis en place avec des tests à l'aide de Karma+de Jasmin. J'ai une fonction que je veux tester qui prend un grand objet JSON, le convertit en un format qui est plus consommable par le reste de l'application, et renvoie cet objet converti. C'est tout.
Pour mes tests, j'aimerais que vous avez séparé des fichiers JSON (*.json) avec des simulations de contenu JSON seulement-pas de script. Pour le test, je voudrais être en mesure de charger le fichier JSON et de la pompe de l'objet dans la fonction je suis en essais.
Je sais que je peux intégrer le JSON dans un simulacre d'usine comme décrit ici: http://dailyjs.com/2013/05/16/angularjs-5/ mais je veux vraiment le JSON pour ne pas être contenue dans un script--tout droit des fichiers JSON.
J'ai essayé quelques petites choses, mais je suis assez noob dans ce domaine. D'abord, j'ai mis mon Karma inclure mon fichier JSON pour voir ce que ça ferait:
files = [
...
'mock-data/**/*.json'
...
]
Cela a abouti à:
Chrome 27.0 (Mac) ERROR
Uncaught SyntaxError: Unexpected token :
at /Users/aaron/p4workspace4/depot/sitecatalyst/branches/anomaly_detection/client/anomaly-detection/mock-data/two-metrics-with-anomalies.json:2
Alors je l'ai changé juste à servir les fichiers et de ne pas "comprendre":
files = [
...
{ pattern: 'mock-data/**/*.json', included: false }
...
]
Maintenant qu'ils sont seulement servi, je pensais que je voudrais essayer de le charger dans le fichier à l'aide de $http à partir de l'intérieur de mon spec:
$http('mock-data/two-metrics-with-anomalies.json')
Quand j'ai couru les spécifications que j'ai reçu:
Error: Unexpected request: GET mock-data/two-metrics-with-anomalies.json
Ce qui à mon sens signifie qu'il s'attend à un moqué de réponse à partir de $httpBackend. Alors...à ce point, je ne sais pas comment faire pour charger le fichier à l'aide Angulaire services publics, afin que je pensais que je voudrais essayer de jQuery pour voir si je pouvais au moins obtenir que cela fonctionne:
$.getJSON('mock-data/two-metrics-with-anomalies.json').done(function(data) {
console.log(data);
}).fail(function(response) {
console.log(response);
});
Il en résulte:
Chrome 27.0 (Mac) LOG: { readyState: 4,
responseText: 'NOT FOUND',
status: 404,
statusText: 'Not Found' }
Je inspecter cette demande à Charles et elle fait une demande de
/mock-data/two-metrics-with-anomalies.json
Tandis que le reste des fichiers que j'ai configuré pour être "compris" par le Karma sont demandés, par exemple:
/base/src/app.js
Apparemment, le Karma est de mettre en place une sorte de répertoire de base pour servir les fichiers de. Donc, pour le plaisir j'ai changé mon jquery de demande de données pour
$.getJSON('base/mock-data/two-metrics-with-anomalies.json')...
Et ça marche!!! Mais maintenant, je me sens sale et le besoin de prendre une douche. M'aider à me sentir à nouveau propre.