javascript - Angular $http:s transformRequest ändrar inte headers
God dag!
Jag har skapat RequestTransformer-tjänsten för att ändra content-type-headern och serialisera postdata.
Här är metoden jag använder för att ändra rubrikerna och delegera dataserialisering till metoden serializeData (serializeData fungerar bra).
class RequestTransformer implements IRequestTransformer {
public transformAsFormPost(data, getHeaders:IHttpHeadersGetter): string {
let headers = getHeaders();
headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
return RequestTransformer.serializeData(data) ;
}
/*Other code logic */
}
Jag har också skapat testfall:
describe('Test RequestTransformerService functionality', function () {
let $httpBackend: IHttpBackendService;
let $http: IHttpService;
beforeEach(inject(function (_$httpBackend_, _$http_) {
$httpBackend = _$httpBackend_;
$http = _$http_;
}));
it('should transform post data as a regular form post', function () {
$http({
method: "POST",
url: 'test-transform.com',
transformRequest: RequestTransformer.transformAsFormPost,
data: {
id: 4,
name: "John",
status: "Best Friend"
}
});
$httpBackend.expectPOST('test-transform.com',
function (data) {
expect(data).toEqual('id=4&name=John&status=Best+Friend');
return data;
},
function (headers: Array) {
expect(headers['Content-Type']).toEqual('application/x-www-form-urlencoded; charset=utf-8');
return headers;
}).respond(201, '');
$httpBackend.flush();
})
});
Resultatet av testrundan är:
Förväntad 'application/json;charset=utf-8' att vara lika med 'application/x-www-form-urlencoded; charset=utf-8'.
Vad kan orsaken till det vara?