J'ai beaucoup de mal à obtenir des dépendances correctement fournies pour un service AngularJS.
Je vois un certain nombre d'autres messages avec des erreurs similaires ici sur StackOverflow mais aucun d'entre eux ne semble résoudre le problème.
Voici le code de l'application:
cm.modules.app = angular.module('myApp', ['ngRoute', 'ngAnimate']);
myServiceName = function($http) {
// do stuff
};
myServiceName.prototype.value = 1;
cm.modules.app.service('defaultAlertFactoryA', myServiceName);
Voici le code de test:
describe('test alertFactoryA', function() {
var $provide;
var mAlertFactoryA;
beforeEach(module(cm.modules.app));
beforeEach(angular.mock.module(function(_$provide_) {
$provide = _$provide_;
}));
beforeEach(function() {
inject(function($injector) {
mAlertFactoryA = $injector.get('defaultAlertFactoryA');
});
});
it('should work', function() {
expect(true).toBe(true);
});
});
Voici l'erreur:
Erreur: [$ injector: impr] Fournisseur inconnu: defaultAlertFactoryAProvider <- defaultAlertFactoryA http://errors.angularjs.org/1.2.0-rc.2/ $ injector/impr? P0 = defaultAlertFactoryAProvider% 20 % 3C-% 20defaultAlertFactoryA
Question: Comment puis-je résoudre ce problème afin que le test réussisse?
Voici ce que j'ai utilisé pour le faire fonctionner (enfin)
beforeEach(function() {
module(cm.modules.app.name);
module(function($provide) {
$provide.service('defaultAlertFactoryA', myServiceName);
});
inject(function($injector) {
defaultAlertFactory = $injector.get('defaultAlertFactoryA');
});
});
On dirait que vous devez inclure les fichiers de service dans votre fichier karma.conf.js
files: [
'app/bower_components/angular/angular.js',
'app/bower_components/angular-mocks/angular-mocks.js',
'app/bower_components/angular-ui-router/release/angular-ui-router.js',
'app/app.js',
'app/controllers/*.js',
'app/services/*.js',
'tests/**/*.js'
],
Si elles ne sont pas incluses ici, elles ne sont pas accessibles dans les tests unitaires