jasmine - Unit testing AngularJS with $httpBackend gives "Error: Unexpected Request" -


i'm gonna preface question saying i've gotten test work "loginctrl" performs exact same task. i'm sure issue of small i've overlooked. in advance :)

i've set expected value/response httpbackend test, when run httpbackend.flush(), it's if never set expectation.

testing code:

describe('user register', function () {     var scope, registerctrl, httpbackend, userjohndoe, userjohndoeregistered, restangular;       // test     beforeeach(module('lr.user.register'));       describe('registerctrl', function () {         beforeeach(inject(function ($controller, _$httpbackend_, $rootscope, _restangular_, $state) {             scope = $rootscope.$new();             httpbackend = _$httpbackend_;             restangular = _restangular_;              // models             userjohndoeregistered = {                 "access_token": "yzeyzdhjnjbly2ewmtmxmmqzzgizywy5ndy4ogywmjmzmgvjndu3mdvhy2u0yjjmndc1odi3nwu0odkzzgnkmq",                 "expires_in": 7200,                 "token_type": "bearer",                 "scope": null,                 "refresh_token": "mmfhmtq5nzu4odi5zje2mjk3zjnlyzewyzjkmjc4m2nkzjy2mjvkmjiwnwqzoduxywniyzy3nziymzewyzjhng",                 "user": {                     "username": "johndoe",                     "email": "johndoe@test.net",                     "id": 1,                     "first_name": "john",                     "middle_name": "f",                     "last_name": "doe",                     "created": "2013-09-04t10:46:10-0500",                     "updated": "2013-09-04t10:46:10-0500"                 },                 "status": "success",                 "status_code": 200,                 "status_text": "ok"             };             userjohndoe = {                 "email": "johndoe@test.net",                 "first_name": "john",                 "middle_name": "f",                 "last_name": "doe",                 password: 'test123x',                 passwordsecond: 'test123x',                 client_id: '1_3b5zgimwg4kkko4wksk4sw0o48040o8ws8og8kg4wsowwkc44s'             };              httpbackend.whenpost('/register', userjohndoe).respond(userjohndoeregistered);               registerctrl = $controller('registerctrl', {$scope: scope, $state: $state, restangular: restangular});         }));         aftereach(function () {             httpbackend.verifynooutstandingexpectation();             httpbackend.verifynooutstandingrequest();         });           it('should able register fake user', inject(function () {             var resolvedregistration;             var cb = function (response) {                 // expect userjohndoe object                 resolvedregistration = sanitizerestangularone(response);                  console.log(logtestheader('registration response') +                     json.stringify(resolvedregistration, null, '   '));             };              // set credentials             scope.user = userjohndoecredentials;              // call login             var register = scope.register_user().then(function() {                 cb();             });             scope.$digest();             httpbackend.flush();             expect(resolvedregistration).toequal(userjohndoeregistered);         }));     });   }); 

output response:

chrome 29.0.1547 (mac os x 10.8.4) user register registerctrl should able register fake user failed     error: unexpected request: post /register     no more request expected         @ error (<anonymous>)         @ $httpbackend (/users/bobothefrofro/development/lr-phoenix/phoenix-client/vendor/angular-mocks/angular-mocks.js:959:9)         @ y (/users/bobothefrofro/development/lr-phoenix/phoenix-client/vendor/angular/angular.min.js:64:282)         @ g (/users/bobothefrofro/development/lr-phoenix/phoenix-client/vendor/angular/angular.min.js:62:272)         @ r (/users/bobothefrofro/development/lr-phoenix/phoenix-client/vendor/angular/angular.min.js:96:140)         @ r (/users/bobothefrofro/development/lr-phoenix/phoenix-client/vendor/angular/angular.min.js:96:140)         @ /users/bobothefrofro/development/lr-phoenix/phoenix-client/vendor/angular/angular.min.js:97:293         @ object.g.$eval (/users/bobothefrofro/development/lr-phoenix/phoenix-client/vendor/angular/angular.min.js:104:502)         @ object.g.$digest (/users/bobothefrofro/development/lr-phoenix/phoenix-client/vendor/angular/angular.min.js:102:419)         @ null.<anonymous> (/users/bobothefrofro/development/lr-phoenix/phoenix-client/src/app/user/register/register.spec.js:74:19)     error: declaration location         @ window.jasmine.window.inject.angular.mock.inject (/users/bobothefrofro/development/lr-phoenix/phoenix-client/vendor/angular-mocks/angular-mocks.js:1781:25)         @ null.<anonymous> (/users/bobothefrofro/development/lr-phoenix/phoenix-client/src/app/user/register/register.spec.js:57:54)         @ null.<anonymous> (/users/bobothefrofro/development/lr-phoenix/phoenix-client/src/app/user/register/register.spec.js:9:5)         @ /users/bobothefrofro/development/lr-phoenix/phoenix-client/src/app/user/register/register.spec.js:1:1 

my first thought making request when instantiate controller. maybe try adding $httpbackend.flush() after controller declaration line , see if solves it. also, should $scope.$digest after $httpbackend.flush instead of before?


Comments

Popular posts from this blog

How to remove text and logo OR add Overflow on Android ActionBar using AppCompat on API 8? -

html - How to style widget with post count different than without post count -

url rewriting - How to redirect a http POST with urlrewritefilter -