2016-02-23 156 views
0

下面的代碼是我的控制器邏輯,我想爲它創建一個Jasmine測試用例。用$inject我遇到了問題,如何模擬或使用$inject中使用的服務,併爲以下AngularJS控制器邏輯編寫Jasmine測試用例。努力爲AngularJS編寫一個Jasmine測試用例

(function() { 
    'use strict'; 
    var controllerId = 'user'; 
    angular.module('app').controller(controllerId, user); 
    user.$inject = ['$rootScope', 'userService', 'common']; 

    function user($rootScope, $userService, common) { 
     var vm = this; 
     vm.users = []; 

     vm.sorting = { 
      column: "UpdatedDate", 
      order: 0 
     }; 

     vm.gridHeaders = [ 
      { title: "UserName", visible: true, sort: true, name: 'UserName', filter: true, type: 'string' }, 
      { title: "First Name", visible: true, sort: true, name: 'FirstName', filter: true, type: 'string' }, 
      { title: "Middle Name", visible: true, sort: true, name: 'MiddleName', filter: true, type: 'string' }, 
      { title: "Last Name", visible: true, sort: true, name: 'LastName', filter: true, type: 'string' }, 
      { title: "Email Address", visible: true, sort: true, name: 'EmailID', filter: true, type: 'string' }, 
      { title: "Phone Number", visible: true, sort: true, name: 'PhoneNumber', filter: true, type: 'string' }, 
      { title: "Mobile Number", visible: true, sort: true, name: 'MobileNumber', filter: true, type: 'string' }, 
      { title: "City", visible: true, sort: true, name: 'City', filter: true, type: 'string' }, 
      { title: "Role", visible: true, sort: true, name: 'RoleID', filter: true, type: 'int' }, 
      { title: "Address", visible: true, sort: true, name: 'Address', filter: true, type: 'string' }, 
      { title: "UserType", visible: true, sort: true, name: 'UserType', filter: true, type: 'int' }, 
      { title: "RoleName", visible: true, sort: true, name: 'RoleName', filter: true, type: 'string' } 
     ]; 

     vm.editUser = function (value) { 
      if (value > 0) { 
       var request = [{ 
        "PageNumber": vm.pagination.currentPage, 
        "PageSize": vm.pagination.pageSize, 
        "SortColumn": vm.sorting.column, 
        "SortOrder": vm.sorting.order, 
        "Query": "UserID=" + value 
       }]; 
       $userService.sendUserID(request); 
      } 
     } 

     vm.loadUserSearchDetails = function() { 
      //common.showSpinngMan(); 
      var pageConstants = common.preparePageConstants(); 
      vm.pageDropDown = pageConstants.pageDropDown; 
      vm.pagination = pageConstants.pagination; 
      loadGrid(); 
     }; 

     vm.loadPageData = function (scenario) { 
      vm.pagination.currentPage = common.setPagination(scenario, vm.pagination) 
      loadGrid(); 
     }; 

     //Load grid 
     var loadGrid = function (data) { 
      var request = [{ 
       "PageNumber": vm.pagination.currentPage, 
       "PageSize": vm.pagination.pageSize, 
       "SortColumn": vm.sorting.column, 
       "SortOrder": vm.sorting.order, 
       "Query": "" 
       // Filters: vm.filterPanel.savedFilter 
      }]; 
      $rootScope.loading = true; 
      $userService.getUserDetails(request).then(function (result) { 
       debugger; 
       if (!!result) { 
        vm.users = result.SearchUsers; 
        vm.pagination.totalRecords = vm.users.length; 
        vm.pagination.totalPages = Math.ceil(vm.pagination.totalRecords/vm.pagination.pageSize); 
       } 
      }).catch(function (result) { 
       console.log("error load grid"); 
       //$location.path("/error"); 
      }).finally(function() { 
       $rootScope.loading = false; 
      }) 
     }; 

     return vm; 
    } 
})(); 
+1

你有什麼試過的?另外,你真正的問題是什麼?我們不在這裏爲你做你的工作。先看看這個:https://docs.angularjs.org/guide/unit-testing –

+0

你好,我的問題是用戶服務和這一行的用戶普遍$注= ['$ rootScope','userService','共同']; – user3774048

回答

0

用於上述控制器代碼我已經通過書面茉莉測試用例除去注入服務userservice和common.js

新零件包括: //user.$inject = [ '$ rootScope',' userService','common']; //行中刪除

function user($rootScope) { // , $userService, common params removed 
    var vm = this; 
    vm.users = []; 

評論有關$ userservice代碼和寫測試用例茉莉下面一樣,它的工作很好..我的問題是,當我注入其他相關性,即「userservice「共同」

怎麼寫

描述( 「A套件」,函數(){

beforeEach(module('app')); 

var $controller; 
var mockServiceDepedency; 
beforeEach(inject(function (_$controller_) {  
    $controller = _$controller_;  
})); 

it("testing 5", function() { 
    var $rootScope = {}; 
    var controller = $controller('user', { $rootScope: $rootScope });    
    expect(controller.users).not.toBeNull(); 
    expect(controller.users).toEqual([]); 
    expect(controller.sorting.column).toEqual("UpdatedDate"); 
    expect(controller.sorting.order).toEqual(0); 
    expect(controller.gridHeaders[0]).toEqual({ title: "UserName", visible: true, sort: true, name: 'UserName', filter: true, type: 'string' }); 
    expect(controller.pageDropDown).not.toBeNull(); 
    expect(controller.pageDropDown).not.toBeNull(); 
    expect(controller.loadUserSearchDetails.pageConstants).not.toBeNull(); 

}); 

});

相關問題