2015-11-16 3 views
1

Я пытаюсь сделать реальный вызов и Присвоить области для тестирования Использования PASSTHROUGH метода, но Бросив ОшибкуКак сделать вызов REST API в контроллере Единичный тест?

кода следующим образом: -

describe('Controller: MainCtrl', function() { 

      // load the controller's module 
      beforeEach(module('w00App')); 

      var scope, MainCtrl, $httpBackend; 

      // Initialize the controller and a mock scope 
      beforeEach(inject(function(_$httpBackend_, $rootScope, $controller) { 
        $httpBackend = _$httpBackend_; 
        $httpBackend.expectGET('http://api.some.com/testdata').passThrough(); 


        scope = $rootScope.$new(); 
        MainCtrl = $controller('MainCtrl', { 
          $scope: scope 
        }); 
      })); it('should make a post to refresh the friends list and return matching users', function(){ 

       var deferredResponse = $httpBackend.expectGET('http://api.some.com/testdata').passThrough(); 
       console.log('response'+JSON.stringidy(deferredResponse)); 

       $httpBackend.flush(); 

      // expect(deferredResponse).toEqual(deferredResponse); 
      }); }); 

Error :- TypeError: 'undefined' is not a function (near '... ').passThrough();...') .....

Как я могу позвонить и Присвоить Прицелы Как в реальном контроллере? PLS Помощь .. это сделать мою жизнь легкой.

ответ

1

При тестировании реального контроллера и внутри контроллера вы делаете несколько вызовов REST на резервную копию, лучше всего имитировать эти ответные вызовы, перехватить вызовы через объект $httpBackend.

jasmine.getJSONFixtures().fixturesPath = 'base/test/unit/authz/api_mock/'; 
    $httpBackend.when('POST', CONFIG.get('MAIN_URL_FOR_REST_SERVICES') + 'actions/search').respond(function() { 
     return [200, window.getJSONFixture('actions.json')]; 
    }); 

По крайней мере, так я продолжаю тестировать контроллеры.

, если вы действительно хотите, чтобы позвонить в поддержке использования:

$http.get(YOUR_URL).success(function(data) { 
    --- your test --- 
}); 

и не забывайте делать инъекции службу HTTP в методе beforeEach:

beforeEach(inject(function(_$http_) { 
    $http = _$http_; 
})); 
+0

window.getJSONFixture ('actions.json ') - это макет Json? – Prasad

+0

Да, это издевавшийся ответ – aurelius

+0

Невозможно получить реальный ответ Api в $ scope? Как и в реальном контроллере, не могли бы вы дать мне знать, что нужно вводить для jasmine.getJSONFixtures() – Prasad

 Смежные вопросы

  • Нет связанных вопросов^_^