我遇到了变量范围问题。下面的代码是Protractor,它是Jasmine和JavaScript的混合体。我遇到的问题是我正在尝试使用householdLabelText
中的字符串值并将其与householdArray[i]
的值进行比较。
但是,每当我这样做时,householdArray[i]
都会以未定义的形式返回。我猜这是因为householdArray
超出范围或某事。我不是一个专家,Promise / callback是如何工作的,所以我可能错了。如果有人能给我一些关于如何保持householdArray
范围的提示,我将不胜感激。
it((testNumber += 1) + '---' + suiteName + '---' +
'It should dispaly the appropraite text for the rating factors.',
function() {
var householdArray = ['ACCIDENTS', 'VIOLATIONS', 'DRIVERS', 'VEHICLES', 'TENURE'];
element.all(by.repeater('item in vm.policyDetails.householdDetails')).then(function(householdDetails) {
for(var i = 0; i < householdDetails.length; i++)
{
householdDetails[i].element(by.binding('item.label')).getText().then(function(householdLabelText) {
console.log(householdArray[i]);
expect(householdLabelText).toEqual(householdArray[i]); // householdArray[i] is undefined
});
}
});
});
答案 0 :(得分:0)
householdArray
的范围很好,因为它已在测试功能块中声明,并且您在嵌套函数中使用它,因此它应该绝对在范围内。
更可能的原因是i
的值导致它超出数组边界读取,因为householdDetails.length
可能与householdArray.length
不同。这是我在这个例子中要检查的第一件事。