2014-06-09 24 views
23

Tôi cần kiểm tra Bộ điều khiển sử dụng $routeParams để xác định thao tác đó. Có lẽ nó là một vấn đề thử nghiệm, hoặc là sai cách tôi đã viết bộ điều khiển, vì vậy bây giờ tôi không thể viết một bài kiểm tra.Góc Kiểm tra bộ điều khiển sử dụng RouteParams

Đây là bộ điều khiển của tôi

angular.module('cmmApp') 
.controller('UserCtrl', function ($scope, $location, $routeParams, $ionicLoading, $ionicPopup, Userservice) { 

    //if a user id is set retrieve user information 
    if(typeof $routeParams.id !== 'undefined'){ 

     var loader = $ionicLoading.show({content: "Retrieving user data"}); 

     var user = Userservice.get({id: $routeParams.id}).$promise; 

     user.then(function(res){ 
      console.log(res); 
      $scope.user = res.user; 
      loader.hide(); 
     }); 
    } 
    //else create an empty resource 
    else { 
     $scope.user = new Userservice; 
    } 
}); 

Về cơ bản tôi chỉ muốn tải một nguồn lực nếu một id được cung cấp là $routeParams, nếu không tạo ra một nguồn tài nguyên có sản phẩm nào.

Và đây là bài kiểm tra:

'use strict'; 

describe('Controller: UserCtrl', function() { 

    // load the controller's module 
    beforeEach(module('cmmApp')); 

    var UserCtrl, 
     scope, 
     routeParams; 

    // Initialize the controller and a mock scope 
    beforeEach(inject(function ($controller, $rootScope, $routeParams, Userservice) { 
    scope = $rootScope.$new(); 
    routeParams = $routeParams; 
    UserCtrl = $controller('UserCtrl', { 
     $scope: scope 
    }); 

    console.log("routeParams"); 
    routeParams = {id: 8490394}; 
    console.warn(routeParams); 
    })); 

    it('should create an epmty user', function() { 
    console.log(scope.user); 
    expect(scope.user).toEqual({}); 

    }); 

}); 

Khi tôi chạy grunt test nghiệp trả lời:

Controller: UserCtrl should create an epmty user FAILED 
    Expected { } to equal { }. 
    Error: Expected { } to equal { }. 
    at null.<anonymous> (/Users/carlopasqualicchio/Sites/CMM_Ionic/test/spec/controllers/user.js:28:24) 

Tôi wonering thế nào để biết nghiệp để thay đổi $routeParams.id trước một thử nghiệm để chạy, và gán một giá trị khác nhau trong hai thử nghiệm khác nhau (tôi cần đặt giá trị đó thành giá trị rỗng trong giá trị đầu tiên và giá trị khác).

Mọi trợ giúp đều được đánh giá cao.

Cảm ơn, Matt.

+0

Các bạn đã thử gán một giá trị cho '$ routeParams.id' ? –

Trả lời

37

Bạn có thể vượt qua một đối tượng tùy chỉnh $routeParams sử dụng đối số thứ hai của $controller (người dân địa phương phản đối), tức là giống như cách bạn vượt qua $scope:

UserCtrl = $controller('UserCtrl', { 
    $scope: scope, 
    $routeParams: {id: '...'} 
}); 
+0

Công trình này, vì vậy tôi đã sử dụng để mô tả chức năng để kiểm tra bộ điều khiển của tôi có và không có thông số. Cảm ơn rất nhiều. – teone

Các vấn đề liên quan