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