Does anyone have a solution for this issue? hank you so much.. Diego
On 19 February 2014 12:18, Diego Fernandez < [email protected]> wrote: > I have the same exact issue, did you manage to solve it? > Thank you > > > On Wednesday, 23 October 2013 21:26:33 UTC+1, Grant Harris wrote: >> >> The first test works properly as it returns a 200 status code, but the >> second two do not. >> >> On Wednesday, October 23, 2013 1:25:19 PM UTC-7, Grant Harris wrote: >>> >>> I'm having some issues with testing non 200 response codes with the spec >>> unit testing in Angular 1.2. These unit tests used to work, however, after >>> upgrading from Angular 1.15 to Angular 1.2, the mock http calls that return >>> a non 200 level response code (In my case 400) stopped working properly in >>> my unit tests. >>> >>> I get the following errors (see below) when my unit tests 'should error >>> when passwords do not match' and 'should error when current password is not >>> correct' return a 400 error. Switching the mocks to return a 200 error >>> instead of a 400 error resolves this issue. >>> >>> Am I doing something wrong or is perhaps something broken with the >>> testing framework and non 200 statuses? Any ideas? >>> >>> Thanks, >>> >>> Grant >>> >>> >>> TypeError: Cannot read property 'data' of undefined >>> >>> at /Users/grant/hg/wardenclyffe/manhattan/app/bower_ >>> components/angular/angular.js:6311:22 >>> >>> at wrappedCallback (/Users/grant/hg/wardenclyffe/ >>> manhattan/app/bower_components/angular/angular.js:9106:81) >>> >>> at /Users/grant/hg/wardenclyffe/manhattan/app/bower_ >>> components/angular/angular.js:9192:26 >>> >>> at Scope.$eval (/Users/grant/hg/wardenclyffe/manhattan/app/bower_ >>> components/angular/angular.js:10034:28) >>> >>> at Scope.$digest (/Users/grant/hg/wardenclyffe/manhattan/app/bower_ >>> components/angular/angular.js:9882:23) >>> >>> at Scope.$apply (/Users/grant/hg/wardenclyffe/manhattan/app/bower_ >>> components/angular/angular.js:10137:24) >>> >>> at done (/Users/grant/hg/wardenclyffe/manhattan/app/bower_ >>> components/angular/angular.js:6576:45) >>> >>> at handleResponse (/Users/grant/hg/wardenclyffe/manhattan/app/bower_ >>> components/angular-mocks/angular-mocks.js:1111:9) >>> >>> at Function.$httpBackend.flush (/Users/grant/hg/wardenclyffe/ >>> manhattan/app/bower_components/angular-mocks/angular-mocks.js:1439:26) >>> >>> at null.<anonymous> (/Users/grant/hg/wardenclyffe/ >>> manhattan/test/spec/services/account.js:65:17) >>> >>> >>> Error: [$rootScope:inprog] $digest already in progress >>> >>> http://errors.angularjs.org/1.2.0-rc.2/$rootScope/inprog?p0=%24digest >>> >>> at /Users/grant/hg/wardenclyffe/manhattan/app/bower_ >>> components/angular/angular.js:78:12 >>> >>> at beginPhase (/Users/grant/hg/wardenclyffe/manhattan/app/bower_ >>> components/angular/angular.js:10328:15) >>> >>> at Scope.$digest (/Users/grant/hg/wardenclyffe/manhattan/app/bower_ >>> components/angular/angular.js:9874:9) >>> >>> at Function.$httpBackend.verifyNoOutstandingExpectation >>> (/Users/grant/hg/wardenclyffe/manhattan/app/bower_ >>> components/angular-mocks/angular-mocks.js:1462:16) >>> >>> at null.<anonymous> (/Users/grant/hg/wardenclyffe/ >>> manhattan/test/spec/services/account.js:20:17) >>> >>> >>> *Here's the code I'm using.* >>> >>> 'use strict'; >>> >>> describe('Service: account', function () { >>> >>> var httpBackend, account, scope; >>> >>> beforeEach(function() { >>> module('manhattanApp'); >>> >>> inject(function($httpBackend, $rootScope, _account_) { >>> httpBackend = $httpBackend; >>> >>> account = _account_; >>> scope = $rootScope.$new(); >>> }); >>> >>> }); >>> >>> afterEach(function() { >>> httpBackend.verifyNoOutstandingExpectation(); >>> httpBackend.verifyNoOutstandingRequest(); >>> }); >>> >>> it('should change the password on success return', function() { >>> // Setup the fake http response >>> httpBackend.whenPOST('/api/v1/account/change_password').respond(200, >>> 'success'); >>> >>> // Setup the spies for testing >>> var success_callback = jasmine.createSpy('success_callback'); >>> var error_callback = jasmine.createSpy('error_callback'); >>> >>> // Perform the call associating callbacks with spies >>> var my_response = account.change_password('current_pass', >>> 'new_pass', 'new_pass'); >>> my_response.success(success_callback); >>> my_response.error(error_callback); >>> >>> // Digest to fire the http calls, then flush backend to trigger >>> callbacks >>> scope.$digest(); >>> httpBackend.flush(); >>> >>> // Ensure we expect things to happen as they should >>> expect(success_callback).toHaveBeenCalled(); >>> expect(success_callback.calls.length).toEqual(1); >>> expect(success_callback.calls[0].args[0]).toEqual('success'); >>> expect(success_callback.calls[0].args[1]).toEqual(200); >>> >>> expect(error_callback.calls.length).toEqual(0); >>> }); >>> >>> it('should error when passwords do not match', function() { >>> // Setup the fake http response >>> httpBackend.whenPOST('/api/v1/account/change_password').respond(400, >>> 'Passwords Do Not Match'); >>> >>> // Setup the spies for testing >>> var success_callback = jasmine.createSpy('success_callback'); >>> var error_callback = jasmine.createSpy('error_callback'); >>> >>> // Perform the call associating callbacks with spies >>> var my_response = account.change_password('current_pass', >>> 'new_pass', 'new_pass_no_match'); >>> my_response.success(success_callback); >>> my_response.error(error_callback); >>> >>> // Digest to fire the http calls, then flush backend to trigger >>> callbacks >>> scope.$digest(); >>> httpBackend.flush(); >>> >>> // Ensure we expect things to happen as they should >>> expect(success_callback.calls.length).toEqual(0); >>> >>> expect(error_callback).toHaveBeenCalled(); >>> expect(error_callback.calls.length).toEqual(1); >>> expect(error_callback.calls[0].args[0]).toEqual('Passwords Do Not >>> Match'); >>> expect(error_callback.calls[0].args[1]).toEqual(400); >>> }); >>> >>> it('should error when current password is not correct', function() { >>> // Setup the fake http response >>> httpBackend.whenPOST('/api/v1/account/change_password').respond(400, >>> 'Not Your Current Password'); >>> >>> // Setup the spies for testing >>> var success_callback = jasmine.createSpy('success_callback'); >>> var error_callback = jasmine.createSpy('error_callback'); >>> >>> // Perform the call associating callbacks with spies >>> var my_response = account.change_password('bogus_pass', 'new_pass', >>> 'new_pass'); >>> my_response.success(success_callback); >>> my_response.error(error_callback); >>> >>> // Digest to fire the http calls, then flush backend to trigger >>> callbacks >>> scope.$digest(); >>> httpBackend.flush(); >>> >>> // Ensure we expect things to happen as they should >>> expect(success_callback.calls.length).toEqual(0); >>> >>> expect(error_callback).toHaveBeenCalled(); >>> expect(error_callback.calls.length).toEqual(1); >>> expect(error_callback.calls[0].args[0]).toEqual('Not Your Current >>> Password'); >>> expect(error_callback.calls[0].args[1]).toEqual(400); >>> }); >>> }); >>> >>> >>> >>> *This is my service itself* >>> >>> 'use strict'; >>> >>> angular.module('manhattanApp') >>> .service('account', function($http, config) { >>> return { >>> change_password: function(current_pass, new_pass, again_pass) { >>> return $http({ >>> method: 'POST', >>> url: config.API_BASE_URL + '/account/change_password', >>> data: { >>> current_pass: current_pass, >>> new_pass: new_pass, >>> again_pass: again_pass >>> } >>> }); >>> } >>> }; >>> }); >>> >>> -- > You received this message because you are subscribed to the Google Groups > "AngularJS" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/angular. > For more options, visit https://groups.google.com/groups/opt_out. > -- You received this message because you are subscribed to the Google Groups "AngularJS" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/angular. For more options, visit https://groups.google.com/groups/opt_out.
