Я пытаюсь выполнить проверку единиц измерения с помощью QUnit, но получаю сообщения об ошибках: $ httpBackend.whenGET не является функцией, $ httpBackend.when не является функцией. Я включил угловые mocks и услуги углового бриза (http://www.breezejs.com/documentation/breeze-angular-service), который использует угловую библиотеку q для обещаний и httpbackend вместо $ .ajax для передачи данных. Я все еще не могу издеваться над любыми вызовами на сервере. Некоторые примеры кода:Единичное тестирование Угловое с Breeze
var $httpBackend,
injector;
var SPAModule = angular.module("spa");
injector = angular.injector(['ng', 'spa']);
$httpBackend = injector.get("$httpBackend");
SPAModule.config(function ($provide) {
$provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator);
});
тест («Когда контроллер называется, то он должен быть создан с правильными данными о масштабах», функция() { «использовать строгое»;
// Given
$httpBackend.whenGET("/Breeze/Data/Jobs").respond({ data: jobData });
$httpBackend.whenGET("/Breeze/Data/Metadata").respond({});
var routeParams = { id: "b" },
// When
controller = injector.get('$controller')(toriga.propertyController, {
$scope: theScope,
$window: windowMock,
$location: locationMock,
$routeParams: routeParams
}),
$rootScope = injector.get('$rootScope');
$httpBackend.flush();
$rootScope.$apply(); // forces results of promise to be executed
// Then
notEqual(controller, null, 'controller was created properly');
strictEqual(theScope.pageTitle, "Property", "pageTitle was set on the scope");
notEqual(theScope.job, null, "Job set on the scope");
ok(toastrMock.warning.notCalled, "No warning messages were displayed");
ok(toastrMock.error.notCalled, "No error messages were displayed");
});
Этот код работал нормально, когда я не использовал ветер, но теперь я переключился, я не могу заставить его работать, а документация оставляет желать лучшего. Любая помощь будет оценена по достоинству.
Где скрывается $ q(); существовать? Я получаю функцию не существует – johnstaveley
Обратите внимание, что я определил ее во втором 'beforeEach'. Это просто сахар над $ rootScope. $ Apply(), который (на мой взгляд) не передает намерения, а также «flush $ q» или «flushPromiseQueue». – Ward
Привет, функция Inject специфична для жасмина, поскольку я сказал, что использую QUnit. – johnstaveley