$http.get не определен, когда $http используется вне углового кода

Я запускаю модульный тест jasmine против метода, который находится вне углового контроллера.

Запуск жасмина выдает следующую ошибку:

TypeError: невозможно прочитать свойство «получить» неопределенного в testMethod

Может ли кто-нибудь помочь мне с исправлением вышеуказанной ошибки. Спасибо !

Test.js

function testMethod() {
    var $http = angular.element('html').injector().get('$http');
    $http.get('/testAPI/testCall').success(...);
}

TestSpec.js

it('makes a successful Test call', angular.mock.inject(function ($http, $window) {
    testMethod();
}));

JasmineSpecRunner.html

<html>
<head>
<meta charset="utf-8">
<link rel="shortcut icon" type="image/png" href="lib/jasmine_favicon.png">
<link rel="stylesheet" href="lib/jasmine.css">

<script src="lib/jquery-2.1.3.js"></script>

<script src="lib/jasmine.js"></script>
<script src="lib/jasmine-html.js"></script>
<script src="lib/boot.js"></script>
<script src="lib/angular.js"></script>
<script src="lib/angular-mocks.js"></script>

<!-- include source files here-->
<script src="src/Test.js"></script>

<!-- include spec files here-->
<script src="specs/TestSpec.js.js"></script>
</head>
<body>
<div ng-app="SpecRunner" ng-controller="SpecController"></div>
</body>
</html>

PS: Моя реализация основана на этом ответе stackoverflow.


person Goksean    schedule 10.03.2015    source источник


Ответы (2)


Попробуйте внедрить $http в функцию testMethod... например, testMethod($http).

Кроме того, я думаю, что у вас есть орфографическая ошибка в этой строке:

<script src="specs/TestSpec.js.js"></script>

это должно быть так:

<script src="specs/TestSpec.js"></script>
person Future Engineer    schedule 12.03.2015

Попробуйте использовать службу httpBackend угловых макетов для тестирования вызовов ajax на сервер.

person Vlado Pandžić    schedule 10.03.2015