test - Prueba unitaria de un servicio en Controlador con Jasmine en AngularJS
test service angular 4 (1)
Es incorrecto en el sentido de que no es una prueba unitaria. Si está probando el controlador aquí, entonces debe burlarse de CrudService
y probar que $scope.groups
se haya asignado correctamente.
beforeEach(function () {
module(function ($provide) {
$provide.factory(''CrudService'', function () {
return {
getAllGroups: function () {
return {
$promise: null // return an actual promise here
}
}
}
});
});
});
it(''should set groups'', function () {
expect($scope.groups).toEqual(''success'')
});
Y necesita una especificación separada para probar si CrudService
llama al backend correctamente.
En mi controlador he definido el siguiente servicio:
CrudService.getAllGroups().$promise.then(
function (response) { $scope.groups = response; },
function (error) { //error code.. }
);
Bueno, quiero probar este servicio si recibe una respuesta o no. En el script de prueba al principio, he definido una función para verificar si el servicio está definido en absoluto.
Código de prueba:
describe(''Ctrl: TestCtrl'', function () {
beforeEach(module(''testApp''));
var scope,
CrudService,
ctrl,
backend;
beforeEach(inject(function ($controller, $rootScope, _CrudService_, $httpBackend) {
scope = $rootScope.$new();
ctrl = $controller(''TestCtrl'', {
$scope: scope
});
CrudService = _CrudService_;
backend = $httpBackend;
}));
it(''should defined the service getGroups'', function () {
expect(CrudService.getGroups).toBeDefined();
});
//this is wrong!
it(''should returns a successful response'', function () {
backend.expectGET(''http://localhost:63831/api/group'').respond(200, ''success'');
backend.flush();
});
});
No sé cómo obtener una respuesta en la prueba. Soy nuevo en pruebas unitarias y necesito ayuda.
Para una mejor comprensión aquí está el código de servicio:
//CrudService file:
...
return {
getAllGroups: function () {
return ResService.group.query();
}
}
...
//ResService file:
return {
group: $resource(baseUrl + ''/api/group/:Id'', {
Id: ''@Id''
}, {})
}
¿Alguien tiene una idea?