2015-03-25 1 views
1

J'ai vu deux façons différentes d'injecter des références dans des tests unitaires.Comment injecter des références dans le test unitaire angularjs

Souligné Emballage

beforeEach(inject(function(_myService_){ 
    myService = _myService_; 
})); 

ou

injection

beforeEach(inject(function($injector) { 
    myService = $injector.get('myService'); 
})); 
injecteur $

Quelles sont les différences? Lequel est la meilleure pratique?

Répondre

1

Les deux fonctionneront. La même option est également disponible pour un contrôleur ou un service, mais vous utilisez généralement le modèle qui est plus similaire à l'habillage de soulignement, sauf pour des cas spécifiques lorsque cela est insuffisant. Le "underscore wrapping" est un peu plus propre car il suffit d'injecter un service myService par opposition à deux services $injector et myService. De plus, l '"injecteur $ injecteur" dépend de la technique "Underscore Wrapping" pour obtenir le service $injector de toute façon. Enfin, les exemples de Jasmine et Angular utilisent l'exemple "Underscore Wrapper".

Le second vous donne de la flexibilité si vous avez le nom de service sous forme de chaîne quelque part, alors vous devrez utiliser "$ injector injection" pour injecter le service. Enfin, j'utilise cette bibliothèque auxiliaire qui utilise en fait l'approche "$ injector injection" pour la raison que j'ai mentionnée ci-dessus. Je l'ai trouvé très propre. https://github.com/brianmcd/angular-test-helpers/blob/master/src/angular-test-helpers.js