我想用QUnit單元測試angularjs,但得到錯誤消息:$ httpBackend.whenGET不是函數,$ httpBackend.when不是函數。我已經包含角度模擬和角度微風服務(http://www.breezejs.com/documentation/breeze-angular-service),它使用角度q庫來承諾和httpbackend,而不是$ .ajax進行數據傳輸。我仍然無法嘲笑任何對服務器的調用。一些示例代碼:單元測試Angular with 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");
});
這段代碼用來在我不使用微風時正常工作,但現在我已經切換了,我似乎無法讓它工作,文檔很差,如何得到這個工作。任何幫助,將不勝感激。
其中flush $ q();存在?我得到的函數不存在 – johnstaveley
請注意,我在第二個'beforeEach'中定義了它。它僅僅是''rootScope。$ apply()'上的糖而不是「flush $ q」或「flushPromiseQueue」。 – Ward
嗨,注入功能是特定於茉莉花,因爲我說我使用QUnit。 – johnstaveley