unitarias unit test pruebas angularjs node.js jasmine jasmine-node

angularjs - unit - test service angular 4



Prueba de un servicio angular(autenticado) usando jazmín (0)

Soy nuevo en jazmín e intento escribir el caso de prueba. Estoy atrapado y necesito un poco de ayuda. Estoy usando JASEMINE en mi aplicación MEAN.

¡Aquí está el código! Servicio

angular.module(''rugCoPro'') .service(''AuthenticationService'', [''$http'', ''ObjectUtils'', ''Session'', function($http, ObjectUtils, session){ var isError = function(data){ return (ObjectUtils.isObject(data) && data.hasOwnProperty("error")); }; /* * * login * */ this.login = function(username, password, errCallBack, successCallBack){ if(ObjectUtils.isNonEmptyString(username) && ObjectUtils.isNonEmptyString(password)){ var authData = btoa(username + ":" + password); var headers = {Authorization:''Basic '' + authData}; $http.get("api/staff/authenticate", {headers:headers}) .then( function onSuccess(response, status){ if(!ObjectUtils.isObject(response) || !ObjectUtils.isObject(response.data)){ if(errCallBack)errCallBack("Invalid server response, please try again"); return; } var resData = response.data; if (isError(resData)){ if(ObjectUtils.isObject(resData) && ObjectUtils.isObject(resData.error)){ if(errCallBack)errCallBack(resData.error.message); } }else{ $http.defaults.headers.common["X-Auth-Token"] = resData._token; session.setAuthenticated(true); session.setAuthToken(resData._token); session.setUser(resData.user); if(successCallBack) successCallBack(); } }, function onError(response, status){ if(ObjectUtils.isObject(response)){ var hdrs = response.headers(); if(ObjectUtils.isObject(hdrs) && ObjectUtils.isNonEmptyString(hdrs["www-authenticate"])){ if(errCallBack) errCallBack(hdrs["www-authenticate"]); }else{ if(errCallBack) errCallBack("An authorization error occurred, invalid response header"); } }else{ if(errCallBack) errCallBack("An authorization error occurred, invalid response"); } } ); }else{ if(errCallBack) errCallBack("Please enter a valid username and password"); } }; }]);

el caso de prueba que estoy escribiendo es ...

describe("Authentication services spec", function () { var redditService, httpBackend; beforeEach(function() { module(''rugCoPro''); }); it(''should contain a Authentication Service'', inject(function(AuthenticationService, $httpBackend) { expect(AuthenticationService).not.toBeUndefined(); })); });

Estoy intentando escribir algunos casos de prueba para este servicio, pero no entiendo cómo puedo desarrollar llamadas falsas para errCallBack y successCallBack .

para una vista más clara: este es el servicio de cómo estoy llamando desde el controlador. Estaré muy agradecido por tu ayuda.

AuthenticationService.login($scope.username, $scope.password, function(error){ $scope.showLoginError(error); }, function(){ $state.go(''staff''); } );