2017-03-07 2 views
0

I Karma bin mit Winkel Tests schreiben: Hier ist meine spec.js Datei:Winkelprüfung stateprovider gibt immer null

'use strict'; 
var state; 
var $rootScope, $state, $injector, CategoriesService; 

describe('Categories', function() { 
describe('Categories Manage', function() { 

    beforeEach(function() { 
     beforeEach(module('ui.router')); 
     module('CL.Categories', function($provide) { 
      $provide.value('CategoriesService', CategoriesService = {}); 
     }); 

     inject(function(_$rootScope_, _$state_, _$injector_, $templateCache, _CategoriesService_) { 
      $rootScope = _$rootScope_; 
      $state = _$state_; 
      $injector = _$injector_; 
      CategoriesService = _CategoriesService_; 

      // We need add the template entry into the templateCache if we ever 
      // specify a templateUrl 
      $templateCache.put('layout/dashboard.html', ''); 
      $templateCache.put('layout/sidebar.html', ''); 
      $templateCache.put('layout/footer.html', ''); 
      $templateCache.put('layout/header.html', ''); 
      $templateCache.put('categories/manage/index.html', ''); 

     }); 
    }); 

    it('should respond to URL with query parameters', function() { 
     expect($state.href(state)).toEqual('#/categories/manage'); 
    }); 
}); 

});

Dies ist meine Config-Datei:

(function(){ 
'use strict'; 

angular.module('CL.Categories') 
    .config(['$stateProvider', categoriesConfig]); 

function categoriesConfig ($stateProvider){ 
    $stateProvider 
     .state('dashboard.selectCategories', { 
      url: "/categories/select?criteria&referrer&index", 
      templateUrl: 'categories/select/index.html', 
      controller: 'SelectCategoriesController', 
      controllerAs: 'vm', 
      resolve: { 
       categoryRoot: ['CategoriesService', function(CategoriesService){ 
        return CategoriesService.getRootCategories(); 
       }] 
      } 
     }) 
     .state('dashboard.manageCategories', { 
      url: "/categories/manage?active", 
      templateUrl: 'categories/manage/index.html', 
      controller: 'ManageCategoriesController', 
      controllerAs: 'vm', 
      resolve: { 
       workCategories: ['CategoriesService', function (CategoriesService) { 
        return CategoriesService.getCategoriesByOrganisationWithCertificates(); 
       }] 
      } 
     }); 
} 
})(); 

in meiner karma.config Datei ich den Basispfad zu gesetzt haben './'. erwarten, dass der Test ($ state.href (state)) liefert immer null

Antwort

0

Wenn Sie machen Ihren Mock Ruf nach Zustand, versuchen Sie dies stattdessen den 'Staat' zu erhalten:

state = $state.get('dashboard.selectCategories'); 

Dann können Sie Prüfstücke des Staates Erklärung:

expect(state.url).toEqual('/categories/select?criteria&referrer&index'); 
expect(state.templateUrl).toEqual('categories/select/index.html'); 

und so weiter ...

+0

ich habe versucht, die $ state.get Anweisung in der Funktion inject, die äußere und before über dem es Aussage platzieren und immer Zustand ist null – bilpor

+0

Ich musste die Deklaration der Variablen über die äußere Beschreibung verschieben, aber es spielt keine Rolle, wo im Zyklus ich '$ state.go', '$ state.get' oder '$ state.transitionTo' versuche Ich habe immer "keinen solchen Zustand" zurückgegeben. – bilpor

+0

Verschieben Sie die Anweisung $ state.get() in die Anweisung it(). Persönlich würde ich jeden "Zustand" -Test in seinem eigenen beschreibenden Block verpacken, mit seinem eigenen beforeEach() -Block etc., – rrd