2016-05-11 4 views
0

次の角度関数の単位テストケースを書く方法。私はカルマとジャスミンが初めてです。また、if文の中でwindow.openをテストする必要があります。以下の角度関数の単位テストケースを書く方法

$rootScope.getStandardMapPDF = function (mt, g, u, m) 
     { 

    var menuTitle = mt.trim(); 
    var grade = g.trim(); 
    var unit = u.trim(); 
    var module = m.trim(); 
    /*---->Getting the Grade, Unit and Module wise Help files <-------*/ 
    if ($.isEmptyObject($rootScope.StandardMapFiles)) { 
     $rootScope.StandardMapFiles = DataProvider.StandardHelpMaster; 
    } 

    var obj = $rootScope.StandardMapFiles; 
    for (var i = 0; i < obj.length; i++) { 
     if (obj[i].Grade.toLowerCase().indexOf(grade.toLowerCase()) != -1 && obj[i].Unit.toLowerCase().indexOf(unit.toLowerCase()) != -1 && obj[i].Module.toLowerCase().indexOf(module.toLowerCase()) != -1 && obj[i].MenuTitle.toLowerCase() == menuTitle.toLowerCase()) { 
      if (obj[i].FileType.toLowerCase() == 'pdf') { 
       var path = 'Resources/StandardMappings/' + obj[i].FileName.trim() + '.pdf'; 
       //var path = '/fs/oleshare/ole-mygen/StandardMappings/' + obj[i].FileName.trim() + '.pdf'; 
       $window.open(path, '_blank'); 
      } 
      else if (obj[i].FileType.toLowerCase() == 'video') { 
       var path = 'Resources/Video/' + obj[i].FileName.split('.')[0].trim() + '.htm'; 
       $window.open(path, '_blank'); 
      } 
     } 
    } 
}; 

答えて

1

ここでは、テストを書く方法の基本的なアウトラインです:

(function() { 
    describe('your.controller.name.js', function() { 
     var $rootScope, $window;   

     // Init 
     beforeEach(module('your-app-name')); 
     beforeEach(inject(function(_$rootScope_,_$window_) { 
      $rootScope = _$rootScope_; 
      $window = _$window_; 
     })); 

    // Spies 
    beforeEach(function() { 
     spyOn($window,'open'); 
    }); 

    it('should be defined', function() { 
     expect($rootScope.getStandardMapPDF).toBeDefined(); 
    }); 
    describe('$rootScope.getStandardMapPDF', function() { 
     beforeEach(function() { 
      $rootScope.getStandardMapPDF() 
     }); 
     it('should call $window.open', function() { 
      expect($window.open).toHaveBeenCalled(); 
     }); 
    }); 
}()); 

は、なぜあなたはとにかく$rootScopeに機能を付加していますか?

関連する問題