2016-04-04 19 views
0

Ben birim testine bir post isteği yapmak basit bir fabrika deneyin tanımlanmamış $$ akımı atar:

'use strict'; 

angular.module('app').factory('UserFactory', function ($http, $rootScope, $location) { 
    return { 
     'addUser': function (user) { 
      $http.post('/api/user', 
      { 
      'user': user, 
      'url': $location.path(), 
      'title': $rootScope.title 
      }).then(function(result){ 
      console.log(result); 
      }).catch(function(err){ 
      console.log(err); 
      }); 
     } 
    }; 
}); 

Ve bu zorundayız birim test vardır

'use strict'; 

describe('UserFactory', function() { 
    var factory; 
    var httpBackend; 
    var rootScope; 
    var location; 

    beforeEach(module('app')); 

    beforeEach(inject(function($injector, $httpBackend, $rootScope, $location) { 
    httpBackend = $httpBackend; 
    rootScope = $rootScope; 
    location = $location; 
    factory = $injector.get('UserFactory'); 
    rootScope.title = 'Home'; 
    spyOn(location, 'path').and.callFake(function(param) { 
    if(param) { 
     return location; 
    } else { 
     return '/home'; 
    } 
    }); 
    })); 

    it('should correctly call the url /api/user with all informations provided in the body', function() { 
    httpBackend.when('POST', '/api/user') 
     .respond(200); 
    httpBackend.expectPOST('/api/user', {'user': 'user test', 'url': '/home', 'title': 'Home'}); 
    factory.addUser({name: 'user test'}); 
    httpBackend.flush(); 
    httpBackend.verifyNoOutstandingExpectation(); 
    httpBackend.verifyNoOutstandingRequest(); 
    }); 
}); 

Maalesef testi atmak: Mesaj isteğine geçirilen vücudu sınamak ... TypeError: undefined is not an object (evaluating 'current.$$route.title')httpBackend.flush() fonksiyon denir ve neden anlamıyorum

Tam Yığın İzleme:

spyOn(location, 'path').and.callFake(function(param) { 
    if(param) { 
     return location; 
    } else { 
     return '/home'; 
    } 
    }); 

Bir rota benim routeProvider yapılandırmasında /home denilen yoktu, bu yüzden başarısız oldu:

TypeError: undefined is not an object (evaluating 'current.$$route.title') in C:/front/app/scripts/app.js (line 9) 
     C:/front/app/scripts/app.js:9:14402 
     [email protected]:/front/bower_components/angular/angular.js:17348:33 
     C:/front/bower_components/angular-route/angular-route.js:647:36 
     [email protected]:/front/bower_components/angular/angular.js:15757:30 
     C:/front/bower_components/angular/angular.js:15773:39 
     [email protected]:/front/bower_components/angular/angular.js:17025:28 
     [email protected]:/front/bower_components/angular/angular.js:16841:36 
     [email protected]:/front/bower_components/angular-mocks/angular-mocks.js:1779:45 
     C:/front/test/unit/factories/user-factory-spec.js:86:22 

cevap

0

Sorunun yeri taklidinin geldiğini gördük. / ile değiştirildi, şimdi iyi çalışıyor.