2016-04-07 24 views
0

Im Folgenden finden Sie den Beispieldienst, den ich Unit-Test bin versucht:httpBackend.expectPUT nicht in AngularJS Werkseinheit zu testen

angular.module('sampleModule') 
     .factory('sampleService', sampleService); 

    sampleService.$inject = ['$http']; 

    function sampleService($http) { 
     var endpoint = "http://localhost:8088/api/customers/" 
     return { 
      getData: function(id){ 
       return $http({ 
        method: 'GET', 
        url: endpoint + id 
       }); 
      }, 
      updateData: function(id, requestBodyObject){ 
       return $http({ 
        method: 'PUT', 
        url: endpoint + id, 
        data: requestBodyObject 

       }); 
      } 
     }; 
    } 

Unten ist die Probe spec, dass ich den oben Service zu testen. Doch seine Wurffehler

describe('Sample Service', function(){ 

     var service, httpBackend; 

     beforeEach(function(){ 
      angular.mock.module('sampleModule'); 

      angular.mock.inject(function(_sampleService_, $httpBackend){ 
       service = _sampleService_; 
       httpBackend = $httpBackend; 
      }); 
     }); 


     it('updateAdvisorAttributesData should return response on valid acctNumber', function(){ 
      var response = {}; 
      var errResponse = {}; 
      var id = 1234; 
      var requestBody = { 
       '1': 'one' 
      }; 
      var endpoint = "http://localhost:8088/api/customers/" 

      httpBackend.expectPUT(endpoint + id, requestBody).respond(200, {'key': 'value'}); 

      service.updateData(id).then(function(result){ 
       response = result; 
      },function(error){ 
       errResponse = error; 
      }); 

      httpBackend.flush(); 
      expect(response.status).toBe(200); 
      expect(response.data).toEqual({'key': 'value'}); 

     }); 
    }); 

Fehler bei der Ausführung der Spezifikation:

Error: Expected PUT http://localhost:8088/biga/advisors/1234 with different data 
    EXPECTED: {"1":"one"} 
    GOT:  undefined 

Der gleiche Ansatz arbeitete für httpBackend.expectGET(). Jedoch ist es für PUT versagt. Warum scheitert? Wie repariere ich es?

Antwort

1

Sie gehen nicht an einem Körper vorbei, wenn Sie den Test durchführen.

Wechsel:

service.updateData(id).then(function(result){ 

zu:

service.updateData(id, requestBody).then(function(result){