Это функция в контроллере:
var vm = this;
vm.getData = getData;
function getData(val) {
return $http.get('/get-data', {
params: {
query: val
}
}).then(function(response) {
return response.data;
});
}
и это мой (урезанный) тестовый файл:
describe('Controller: MyCtrl', function() {
'use strict';
var MyCtrl;
var rootScope;
var scope;
var httpMock;
beforeEach(function() {
module('MyModule');
inject(function($controller, $rootScope, $httpBackend) {
rootScope = $rootScope;
scope = $rootScope.$new();
httpMock = $httpBackend;
MyCtrl = $controller('MyCtrl as vm', {
$rootScope: rootScope,
$scope: scope,
$http: httpMock,
});
});
});
describe('vm.getData()', function() {
it('returns the required data', function() {
httpMock.when('GET', '/get-data?query=test-val').respond(200, {data: 'test-data'});
httpMock.flush();
expect(scope.vm.getData('test-val')).toEqual('test-data');
});
});
});
Я хотел бы чтобы проверить, что результат при вызове getData() возвращает правильные данные.
В настоящее время я получаю ошибку $http.get is not a function
. Установка точки останова в моей функции показывает, что http зашифрован с помощью $ httpBackend.
Я думаю, что есть что-то фундаментальное, я не понимаю - любые указатели будут очень благодарны.
Это является удивительным - большое спасибо jlast :) – Jay
Просто для полноты картины, вот это блок с парой необходимо вносящий поправки: ' он ('возвращает требуемые данные', function() { var result = {}; httpMock.when ('GET', '/get-data?query=test-val').respond(200, {data : 'test-data'}); MyCtrl.getData ('test-val'), затем (function (_result _) { result = _result_; }); httpMock.flush(); ожидать (результат) .toEqual ({data: 'test-data'}); }); ' – Jay