Ich brauche einen Controller, der $routeParams
verwenden, um es Aktion zu definieren. Vielleicht ist es ein Testproblem, oder es ist falsch, wie ich den Controller geschrieben habe, also kann ich jetzt keinen Test schreiben.Angular Test eine Steuerung, die RouteParams
Hier ist mein Controller
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;
}
});
Grundsätzlich nur laden ich eine Ressource wollen, wenn eine ID zur Verfügung gestellt $routeParams
ist, sonst eine leere Ressource erstellen.
Und hier ist der Test:
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)
Ich wonering wie Karma sagen $routeParams.id
vor einem Test zu ändern, zu laufen und zu:
'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({});
});
});
Wenn ich grunt test
Karma Antwort laufen ein anderer Wert in zwei verschiedenen Tests (ich muss es auf Null im ersten und auf einen Wert für den anderen setzen).
Jede Hilfe wird geschätzt.
Danke, Matt.
Haben Sie versucht, einen Wert zu '$ routeParams.id' Zuweisen ? –