有誰知道我可以測試使用Jasmine $ httpBackend對象發送了多少請求?我如何測試發送到Jasmine服務器的請求數
我有一個kendo網格,它是使用從RESTful服務獲得的數據構建的。
該網格還具有預過濾功能。這意味着您可以聲明一組條件,然後在構建網格時將條件與請求數據一起發送到服務器。
然後,在發送響應之前,應通過RESTful服務過濾數據。因此,響應將只包含符合標準的數據。
問題是,目前有兩個請求正在發送:一個用於數據,另一個用於標準。
我想編寫一個測試,確保只發送一個請求,用於原始數據,並且過濾由RESTful服務完成。
這裏是我的測試:
it('should send only one request to the server when getting data to build the grid', function() {
angular.mock.inject(function ($compile, $rootScope) {
var scope = $rootScope.$new();
// THE CRITERIA
scope.myCriteria = {
"operator": "and",
"operands": [
{
"property": "accountId",
"value": "1",
"constraint": "contains",
"ignoreCase": "true"
}
]
};
// THE ORIGINAL DATA
var respondData = [
{accountId: '1', name: 'Account 1', status: 'active'},
{accountId: '3', name: 'Account 3', status: 'active'},
{accountId: '4', name: 'Account 4', status: 'active'}
];
// THE REQUEST TO GET THE DATA
$httpBackend.when('GET', "api/grid/accounts?crit=substringof('1',accountId)+eq+true").respond(respondData);
// BUILD THE GRID
// sg-data is the data from the RESTful service.
// sg-filters is the filtering criteria
var elem = $compile('<div sg-grid sg-data="api/grid/accounts" sg-columns="accountId,name,shortName,status" sg-filters="myCriteria"></div>')(scope);
$rootScope.$apply();
$httpBackend.flush();
/*
I want to do something like this:
expect($httpBackend.requests.length).toBe(1);
*/
});
});
非常感謝您的答覆。 – Tone
只是添加到上面的答案,當我檢查文檔時,我也發現這一點:afterEach(function(){http://Backend.verifyNoOutstandingExpectation(); $ httpBackend.verifyNoOutstandingRequest(); }); – Tone
你說得對,我已將'verifyNoOutstandingExpectation()'添加到答案中 –