2016-05-03 23 views
1

私はプロジェクトで働いており、私はui-routerプラグインを使用しています。 私のコードのカバレッジレベルを調べると、常にresolve関数のコールバックでカバレッジツールは私のテストで決してresolve関数を実行しないと言います。ユニットテストのui-router解決コールバック

私の質問:

がどのようにこのコードをテストすべきですか?

コードの例:

$stateProvider 
     .state('measures.users', { 
     url: 'users', 
     views: { 
      'navbar': APP_SETTINGS.NAVBAR_SETTINGS, 
      'main': { 
      templateUrl: 'assets/views/users/users.html', 
      controller: 'UsersController', 
      controllerAs: 'users', 
      resolve: { 
       UsersResolve: ['UsersService', function(UsersService){ 

        //My coverage tool never pass in here. 
        //I need testing this area but i dont know what should be test 
        return UsersService.getUsers(); 
       }] 
      } 
      } 
     } 
     }) 

EDIT 私は状態 'measures.users' に移行したときに、私のサービスが呼び出された場合は最後に、私はテスト。

describe('State check', function(){ 

    var state, rootScope, UsersService; 

    beforeEach(module('exampleApp')); 
    beforeEach(inject(eachSpecSetup)); 

    function eachSpecSetup($state, $rootScope, $controller,_UsersService_){ 
     state = $state; 
     UsersService = _UsersService_; 
     rootScope = $rootScope; 
    } 

    it('should be call a UsersService.getUsers to resolve the array to state users', spec1); 

    function spec1(){ 

     spyOn(UsersService, 'getUsers'); 

     state.go('measures.users'); 
     rootScope.$digest(); 

     expect(UsersService.getUsers).toHaveBeenCalled(); 
    } 

}); 

here

答えて

-1

で同様の例はまさにそれを確認してください:URL 'ユーザー' は、あなたのテストでカバーされて

  1. をUsersControllerに登録すると、UsersResolveサービスが呼び出されました。

あなたresolveにいくつかの構文エラーがあるかもしれません:

$stateProvider 
    .state('measures.users', { 
    url: 'users', 
    views: { 
     'navbar': APP_SETTINGS.NAVBAR_SETTINGS, 
     'main': { 
     templateUrl: 'assets/views/users/users.html', 
     controller: 'UsersController', 
     controllerAs: 'users', 
     resolve: { 
      UsersService: UsersServuce, 
      UsersResolve: function(UsersService){ 
       return UsersService.getUsers(); 
      } 
     } 
     } 
    } 
    })