2016-04-01 4 views
0

Я пытался проверить процесс, когда какой-либо запрос был отправлен, и я хочу проверить, одобрены ли заголовки. Что я сделал не так?Как проверить заголовки в любом запросе в угловом?

проверить это codepen: http://codepen.io/gpincheiraa/pen/qZPrEp

App.js

angular 
    .module('exampleApp') 
    .config(configFn); 

    configFn.$inject = ['$httpProvider']; 

    function configFn($httpProvider){ 
    $httpProvider.interceptors.push('ApiInterceptors'); 
    } 

ApiInterceptors.js

angular 
    .module('exampleApp') 
    .factory('ApiInterceptors', factory); 

    factory.$inject = ['$q']; 

    function factory($q) { 
    var service = { 
     request: handleRequest, 
    }; 
    return service; 

    function handleRequest(request){ 
     request.headers['Authorization'] = 'Token token= 59a2cc5ca5fd6c5cb4dadf636d94de1a'; 
     return request; 
    } 

    } 

ApiInterceptors_spec.js

describe('State check', function(){ 
    var httpBackend; 

    beforeEach(module('exampleApp')); 
    beforeEach(inject(eachSpec)); 

    function eachSpec($httpBackend){ 
     httpBackend = $httpBackend; 
    } 

    it('Should be have an Authorization header on any request', spec1); 

    function spec1(){ 
     httpBackend.expectGET('http://www.exampleAPI.com', null, function(headers){ 
      console.log(headers); 
      expect(headers['Authorization']).toBeDefined(); 
     }); 
    } 

}); 
+0

Вы можете проверить console.log в вашем handleRequest? Я думаю, что это не работает, потому что ApiInterceptor определен на заводе. Фабрика не создается в фазе конфигурации. Обычно я сбрасываю определение перехватчика в фазе конфигурации, я не предоставляю его в угловой среде, потому что это необязательно, поскольку оно не будет полезно в других местах, чем там. – Walfrat

+0

@Walfrat спасибо за ваш совет. Я попробую, и тогда я скажу вам. Отвечая на ваш вопрос, нет, console.log никогда не выполняется. –

ответ

1

вы можете вводить головку Auth в самой configFn.

function configFn($httpProvider){ 
$httpProvider.defaults.headers['Authorization'] = 'Token token= 59a2cc5ca5fd6c5cb4dadf636d94de1a'; 
    $httpProvider.interceptors.push('ApiInterceptors'); 
    } 
+0

Спасибо за ваш ответ, я знаю этот метод, чтобы установить заголовки, но мне нужно, чтобы это было испытание поведения запросов при их отправке –

0

Наконец, решение было очень просто! Инъекционной службы HTTP $ и выполнить просто `get``

обновленного codepen --->http://codepen.io/gpincheiraa/pen/qZPrEp

it('Should be have an Authorization header on any request', inject(spec2)); 

    function spec2($http) { 

     httpBackend.expectGET('http://exampleApi.com/') 
     .respond(function(method, url, data, headers, params){ 

      expect(headers).toBeDefined(); 
      expect(headers['Authorization']).toBeDefined(); 

      return {}; 
     }); 

     $http.get('http://exampleApi.com/'); 

     httpBackend.flush(); 

    }