2016-12-30 2 views
2

In Angular-Controller, ich habe einige Codes wie:wie man response.headers ('location') in Jasmin mockt?

$http.save('api/purchases').$promise.then(function(response) { 
    var location = response.headers('location'); // to retrieve the location in response header 
}) 

in Unit-Test von Jasmin,

it('..', function(){ 
    $httpBackend.expectPost('api/purchase').respond(201, {}, {location: 'xxx'}); 
    // when run the test, it reports an error with 'undefined is not a constructor' (evaluting response.headers('location')) 
}) 

Wie kann ich die response.headers testen ('location')?

Antwort

2

Die Angular docs scheint, dass respond statusText braucht, um anzuzeigen, wenn headers gegeben (wie in es ist nicht optional und ist erforderlich, wenn in headers vorbei)

Funktion ([Status] Daten [, headers, status])

Sie sollten einen Text zu übergeben für eine 201 wie so in der Lage sein

$httpBackend.expectPost('api/purchase').respond(201, {}, {location: 'xxx'}, 'Created'); 
+0

Danke, aber es ist nicht der Grund – junlin

0

Verwendung transformResponse in Aktion resource $

var resource = $resource('api/purchase', {}, { 
    get: { 
    method: 'GET', 
    transformResponse: function(data, headers) { 
     var response = {}; 
     response.data = data; 
     response.headers = headers(); 
     return response; 
    } 
    } 
} 

abrufen 'Standort':

resource.get().$promise.then(function(response){ 
    var location = response.headers.location; // 'headers' has been put into response object above 
}) 

dann kann Test normal laufen.

Verwandte Themen