Jasmine und angularjs mit $cookies, Jasmin
Ich bin ziemlich neu zu Jasmin und wollte ein test für die folgenden unten habe ich den code in der test-Sektion, aber ich erhalte die Meldung "TypeError: Cannot set property 'username' of undefined"..
Erstellte ich einen global namespace 'cp' in apps.js und verwendet, dass in der Dienst-und controller.
//controller
cp.controller = {};
cp.controller.LoginController = function($scope, $location, $cookies){
$scope.signIn = function(){
$cookies.user = $scope.form.username;
user.set($scope.form.username);
$location.hash( "home" );
}
};
//service
cp.serviceFactory = {};
cp.serviceFactory.user = function user( $cookies){
var userName = $cookies.user;
return{
set: function(name){
userName = name;
},
get: function(){
return userName;
}
}
};
//test script
describe('Cameo Controllers', function() {
describe('LoginController', function(){
var scope, cookies, ctrl, $httpBackend;
beforeEach(module('CameoPaaS'));
beforeEach(inject(function(_$httpBackend_, $rootScope, $controller, $cookies) {
$httpBackend = _$httpBackend_;
//cookies = $cookies.username;
scope = $rootScope.$new();
cookies = scope.$cookies;
ctrl = $controller(cp.controller.LoginController, {$scope: scope, $cookies: cookies});
}));
it('should log the user into the system', function() {
expect(scope.username).toBeUndefined();
scope.form.username = 'me';
scope.signIn();
//expect(user).toBe(undefined);
});
});
});
Frage: wie kann ich definieren, und setzen Sie den Wert für die $cookies.Benutzername in das test-Skript zu bekommen, um die Fehler.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst sollten Sie sicherstellen, einschließlich der angular-cookies.js diese wurden getrennt von der Haupt-Distribution in 1.0.0rc3
Wenn es nach mir ginge, würde ich wickeln Sie die cookies handling in service und verwenden Sie dann Jasmin zu mock/Spionage auf Ihrem cookie-wrapper-service-Implementierung. Vielleicht finden Sie dieser Beitrag hilfreich. Auch fand ich diese testen Sie cookies in unit-und e2e. IMHO das problem mit diesem ist, dass es zu nah an das Metall, dass die Arbeit mit den browser-cookies direkt.
Ich auch Durchlaufen das gleiche problem, hier die Lösung -
Bitte vorschlagen, wenn es keine bessere Möglichkeit.