unitarias unit test pruebas hacer como angularjs unit-testing jasmine angularjs-service angularjs-controller

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?