0
所以,我有問題測試角度過濾器,需要一個數組,先前已經按組屬性排序。它使用一個標誌屬性來指示該項目是該組的第一個觀測值,然後對後續觀測值爲false。測試角度過濾器返回一個數組與茉莉花
我這樣做有一個ng-repeat指令在UI中的類別標題。
當我測試過濾器時,輸出不會返回帶有標誌的數組,除非我爲返回數組創建新對象。這是一個問題,因爲它在網頁中運行時會導致無限循環。該代碼在網頁中僅向輸入對象添加標誌屬性時起作用。
是否有一些額外的步驟,我應該採取模擬角度如何處理過濾器,以便它輸出正確的數組?
這就是我現在測試的樣子。
describe('IsDifferentGroup', function() {
var list, itemOne, itemTwo, itemThree;
beforeEach(module("App.Filters"));
beforeEach(function() {
list = [];
itemOne = new ListItem();
itemTwo = new ListItem();
itemThree = new ListItem();
itemOne.group = "A";
itemTwo.group = "B";
itemThree.group = "C";
list.push(itemOne);
list.push(itemOne);
list.push(itemOne);
list.push(itemOne);
list.push(itemTwo);
list.push(itemThree);
list.push(itemThree);
list.push(itemThree);
list.push(itemThree);
list.push(itemThree);
});
it('should flag the items true that appear first on the list.', (inject(function (isDifferentGroupFilter) {
expect(list.length).toBe(10);
var result = isDifferentGroupFilter(list);
expect(result[0].isDifferentGroup).toBeTruthy();
expect(result[1].isDifferentGroup).toBeFalsy();
expect(result[4].isDifferentGroup).toBeTruthy();
expect(result[5].isDifferentGroup).toBeTruthy();
expect(result[6].isDifferentGroup).toBeFalsy();
expect(result[9].isDifferentGroup).toBeFalsy();
})));
});
這裏是類似與過濾器的代碼:
var IsDifferentGroup = (function() {
function IsDifferentGroup() {
return (function (list) {
var arrayToReturn = [];
var lastGroup = null;
for (var i = 0; i < list.length; i++) {
if (list[i].group != lastGroup) {
list[i].isDifferentGroup = true;
lastAisle = list[i].group;
} else {
list[i].isDifferentGroup = false;
}
arrayToReturn.push(list[i]);
}
return arrayToReturn;
});
}
return IsDifferentGroup;
})();
謝謝!