我测试Angular应用程序。这个事实在这里不应该是非常重要的。 我要测试的功能如下:
$scope.showItem = function (item) {
if (item.selected) {
activeItems.push(item);
} else {
var index = _.indexOf(activeItems, items);
activeItems.splice(index, 1);
}
};
功能可以根据需要运行。 Array activeItems用于另一个函数,该函数在一些修改后将结果分配给范围。 行为是,如果未选择该项,则将其添加到数组中。如果该项目已被选中,则将从阵列中删除该项目。
it('should remove an item from the array', function () {
var activeItems = [{id: 1, selected: false}, {id:2, selected: true}];
var item = {
id: 1,
selected: false
};
expect(activeItems.length).toEqual(2);
scope.showItem(item);
expect(activeItems.length).toEqual(1); // FAIL!
// expects do not work for var variables. would work, if activeItems is assigned to the scope
});
如果我将activeItems分配给范围(scope.activeItems而不是var activeItems),那么一切正常;但是,我相信如果变量不在视图中显示,则不应将其分配给范围。
首先期望会起作用,因为它是在块内定义的:
expect(activeItems.length).toEqual(2);
第二个不会:
expect(activeItems.length).toEqual(1);
但它适用于范围变量:
expect(scope.activeItems.length).toEqual(1);
我的问题是如何测试该var值?
答案 0 :(得分:0)
我不是正面的,因为很难说出你的意图,如果你有其他的全局,但我认为你的错误是你在{39}之外使用它{39} ;范围。,但再次很难说,因为你可能有其他全局因素导致问题。如果activeItems
不在其范围之内,则activeItems
将再次出现it
,expect
和scope
错误。然后它不会影响数组,它将保持在expect
期间编辑
希望这有帮助!