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.