Я написал тест, который издевается над запросом на сервер, который должен возвращать массив. Проблема заключается в том, что, когда я запустить мой тест дает мне сообщение об ошибке:
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});
};
})
Можете ли вы показать свое перед каждым? –
@BorisCharpentier добавлен beforEach. –