2015-01-30 4 views
0

Я написал тест, который издевается над запросом на сервер, который должен возвращать массив. Проблема заключается в том, что, когда я запустить мой тест дает мне сообщение об ошибке:

Cannot read property 'get' of null

и когда я отладка ясно, что $ HTTP является недействительным по какой-то причине, но если я запустить свой код, он посылает запрос к серверу. Может быть, мой мистический смысл в том, что я использую $ http прямо из контроллера, возможно, я должен использовать сервис для этого, и это решит проблему? Во всяком случае, мой главный вопрос: почему $ http является нулевым и что я делаю неправильно?

код в контроллере:

$scope.getLastReview =() => { $http.get('/lastReview').success((reviewArray: any) => { $scope.reviewsToShow = reviewArray; }); };

Мой тест:

var sut = createController(); 
scope.getLastReview(); 
httpBackend.expectGET("/lastReview").respond(200, reviewArray); 
httpBackend.flush(); 
expect(reviewArray.length).toBeGreaterThan(0); 

beforeEach:

 inject(($injector, $rootScope, $controller) => { 
     httpBackend = $injector.get("$httpBackend"); 
     httpBackend.whenGET("/lastReview").respond(200, reviewArray); 
     scope = $rootScope.$new(); 
     createController =(): lastReviewController => { 
      return $controller(lastReviewController.controllerId, { "$scope": scope, "$http": null, '$resource': null, '$interval': $interval}); 
     }; 
    }) 
+0

Можете ли вы показать свое перед каждым? –

+0

@BorisCharpentier добавлен beforEach. –

ответ

0

инициализации $ HTTP с нулем в вашем перед каждым, не указать его или ввести $ http, но если вы передадите null, ну, это будет null в вашем cont ролик.

+0

omg, это была такая глупая ошибка: [извините за то, что беспокоило вас этим вопросом и спасибо большое :) –

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