templateurl routeprovider route otherwise error ejemplo angularjs jasmine routes params karma-runner

routeprovider - routeparams angularjs



Prueba angular un controlador que usa RouteParams (1)

Puede pasar un objeto $routeParams personalizado utilizando el segundo argumento de $controller (objeto locals), es decir, de la misma manera que pasa el $scope :

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

Necesito probar un Controlador que use $routeParams para definirlo. Tal vez es un problema de prueba, o está mal la forma en que escribí el controlador, por lo que ahora no puedo escribir una prueba.

Aquí está mi controlador

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; } });

Básicamente, solo quiero cargar un recurso si se proporciona una identificación es $routeParams , sino crea un recurso vacío.

Y aquí está la prueba:

''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({}); }); });

Cuando corro la respuesta del karma de la grunt test ronca:

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)

Estoy preguntando cómo decirle a karma que cambie $routeParams.id antes de que se ejecute una prueba, y asigne un valor diferente en dos pruebas diferentes (necesito establecerlo como nulo en el primero, y en un valor para el otro).

Cualquier ayuda es apreciada.

Gracias, Matt.