À l'échelle mondiale de l'objet fantaisie dans angularjs pour jasmin/karma test
J'ai un objet que je suis moqueur en place pour les tests unitaires. Essentiellement dans mon fichier de test je mock up comme suit:
var mockObject = {
mockMethod1 : function() {return true},
mockMethod2 : function() {return true}
};
beforeEach(module('myModule') , function ($provide) {
$provide.value('realObject',mockObject);
});
La façon dont je le comprends, c'est que comme je l'ai tester de nouvelles fonctionnalités dans mon module, etc... n'importe où que les références à la "realObject" sera mon "mockObject"
Mon problème est que j'ai fait de multiples fichiers js pour le test et je ne veux pas définir mon "mockObject" dans chacun d'eux ... je ne veux maintenir dans plus d'endroits que j'ai trop.
Est-il un moyen de déplacer mon "mockObjact" à un autre fichier qui est inclus dans karma.conf.js que va faire le "mockObject" disponible pour l'injection dans un de mes fichiers de test ..... Im pensant à la manière de comment vous injecter $rootScope
OriginalL'auteur Deslyxia | 2014-04-04
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer un mondial beforeEach fonction de si il est écrit en dehors du contexte d'une suite, mais toujours exécutée par le Jasmin, par exemple, créer un fichier à charger par le Karma et écrire votre beforeEach de fonctionner sans l'enfermer dans un décrire la fonction.
Exemple:
Voir tripoter ici
Qu'est-ce que le global? le simulacre de l'objet? Êtes-vous $de fournir le service à valeur dans plusieurs fichiers? Puisque c'est ce que la réponse est sur - fournir à l'moqué de valeur dans un seul fichier pour tous les tests
Je suppose que im pas clair sur exactement comment utiliser $fournir pour obtenir de la fonction dans le nouveau service, qui sera de retour le mockObject. avant ce que je faisais était juste de créer la maquette de l'objet dans le test et ensuite à l'aide d'offrir.
C'est ce que vous devriez faire. Le truc, c'est que vous pouvez faire qu'une seule fois, en un seul fichier dans un seul beforeEach functon qui sera exécuté avant un test si c'beforeEach ne fait pas partie d'une suite
il y a toujours une pièce à ce manque ... Dans mon fichier de test j'ai créer un mockObject ... je l'utilise fournir pour obtenir le mockObject à être utilisé au cours de mes tests, plutôt que de la "realObject" .... tout cela fonctionne très bien ... la pièce manquante est que la définition de ce que mon objet fantaisie "est" réside maintenant en service, de sorte que je peux l'utiliser dans de multiples tests de fichiers et de gérer en un seul endroit. Comment dois-je faire exactement quelque chose le long des lignes du var mockObject = myService.getMockObject()
OriginalL'auteur Eitan Peer
Vous pouvez construire un service qui abrite votre maquette, et injecter le service dans chaque fichier de test.
OriginalL'auteur aet
Il suffit de définir votre maquette de l'objet à l'intérieur d'un autre fichier et de les exporter. Vous devriez être capable de l'utiliser dans n'importe quel fichier.
OriginalL'auteur Archmede