2017-09-28 7 views
0

J'ai utilisé l'application FUSE Admin sur mon projet - http://fuse-angular-material.withinpixels.com/apps/dashboards/project.Impossible d'appeler avantChaque 'injecter' sur angularJS (FUSE Admin) test de l'unité en utilisant le karma

J'ai déjà vérifié d'autres échantillons et même exécuté ce code sur un projet différent et fonctionne très bien. C'est juste que je ne peux pas injecter le service, le contrôleur etc. sur «avant chaque injection», donc je ne peux pas cont. mon test.

Je ne sais pas ce qui ne va pas ou est-ce que j'ai manqué quelque chose (les dépendances? Je ne sais pas) lors de l'exécution sur FUSE. Avez-vous une idée?

Voici mon code.

SERVICE(le service retourne une liste de tableau)

(function() { 
    'use strict'; 

    angular 
     .module('app.admin.users', []) 
     .config(config) 
     .service('adminUserService', service); 

    function service(msApi) { 
     return { 
      adminUserList: function() { 
       return msApi.resolve('[email protected]'); 
      } 
     }; 
    } 

    function config(msApiProvider) { 
     // calling the API (used dummy data) 
     msApiProvider.register('admin.users.list',['app/data/admin/users/users.json']); 
    } 

})(); 

TEST UNITÉ

var oDataService; 
var adminUserService; 

describe('unit test ----------------------------', function() { 
    beforeEach(module('app.admin.users')); 

    beforeEach(function() { 
     inject(function ($injector) { 
      adminUserService = $injector.get('adminUserService'); 
      oDataService = adminUserService.adminUserList(); 
     }); 
    }); 

    it("is registered with the module.", function() { 
     expect(oDataService).not.toBe(null); 
    }); 
}); 
+0

Pourquoi est-il un bloc 'il' à l'intérieur beforeeach? Cela devrait être l'enfant immwdiate du bloc de description. –

+0

@varunsingh oh désolé, mon mauvais, il est censé être en dehors de l'avant-première. Edited mon code. –

Répondre

0

D'abord, vous devez déplacer le bloc 'il est en dehors du bloc beforeeach. Ensuite, pour obtenir le service du module, il existe deux approches.

  1. utilisant l'injecteur (pas commun):

    Ici, vous devez créer manuellement un injecteur à partir du module.

    it('test my service', function(){ 
        var $injector = angular.module(['app.admin.users']) 
        var service = injector.get('adminUserService') 
        expect(service.adminUserList()).not.toBe(null); 
    }); 
    
  2. En utilisant l'injection (plus fréquent)

    it('test my service', inject(function(adminUserService){ 
        expect(adminUserService.adminUserList()).not.toBe(null); 
    })); 
    

Comme vous pouvez le voir 2ème approche est beaucoup plus facile.

Conseiller cet aussi: Injecting Services

+0

Essayé votre code, mais toujours eu la même erreur - https://pastebin.com/HyFEHZFq –

+0

Avez-vous essayé la deuxième approche? –

+0

Oui, toujours la même chose :(. –