web-dev-qa-db-fra.com

Comment charger des données factices à partir d'un fichier JSON dans Angular Test de 2 karma au jasmin?

J'écris karma jasmine cas de test pour angular 2

Et nous avons rencontré l'obligation de simuler des données dans un fichier JSON séparé car les données sont énormes (nous voulons nous assurer que le code est propre). Pour cela, j'ai beaucoup cherché mais je n'ai pas trouvé de solution adéquate.

Nous nous sommes déjà moqués du service HTTP en utilisant MockBackend , nous ne pouvons donc pas utiliser le service HTTP de type angular pour charger JSON car la requête ira à MockBackend.

Alors, y a-t-il un autre moyen de ne pas utiliser de librairies tierces comme Jasmine-jquery ou Karma-jasmine-preprocessor?Plus de type Angular JS 2 voies.

9
Viraj

J'ai eu le même problème!

Enfin, j'ai réalisé que le simple fait d'utiliser la fonction require() directement dans TypeScript fonctionne parfaitement. Il est supporté par Node et @ types/node, sinon certains doivent déclarer des types requis.

Donc, pour charger des données factices à partir d'un fichier JSON dans le test Angular 2 Karma Jasmine, choisissez:

const data: any = require('../../assets/mock-data.json');

PS: crédits à Artur Ampilogov

22
Kaloyan Kosev

j'essaie de faire la même chose, system.import fonctionne si vous passez le chemin du JSON comme ceci

exemple : 

`System.import('../../assets/mock-data/mock-data.json')
.then((json) => {
console.log(json);
});`

ce qui est vraiment bizarre, c’est que je n’ai pas réussi à le faire fonctionner avec des variables . exemple: 

`let myUrl: string = '../../assets/mock-data/mock-data.json';
    System.import(myUrl)
    .then((json) => {
        console.log(json);
    });`
0
phil