我现在正在撕掉我头发上的一点点遗骸。 而且我觉得我左膝失去了视力。
我有两个功能。 每个人都正确地获取参数。 我非常非常,非常喜欢一个函数来获取这两个参数。
我有一个超级简单的数据结构:
var stuff = [
{ name: "Stone", id: "cc45" },
{ name: "Hanley", id: "cc78" }
];
我希望遍历结构并对每个结构运行一个超级简单的测试。请注意:
for (var ii = 0; ii < stuff.length; ii++) {
var aTile = element(by.id(stuff[ii].id));
aTile.getText().then(
/* magical solution */
);
}
所有我都错过了神奇的解决方案。在版本A(缺乏魔力)中,我可以成功地看到Protractor亲切抓住的文本:
aTile.getText().then((function (text) {
console.log(" --Protractor Grab--" + text);
}));
在版本B(也缺乏魔法)中,我可以成功地看到我希望将量角器抓取的文本与之比较的数据:
aTile.getText().then((function (test) {
console.log(" ==Stuff test==" + test);
})(stuff[ii].name));
我不能做的,无论我拉多少头发,都要让量角器来比较两者。实际上,我需要补充一下:
expect(protractorGrabbedText).toContain(expectedTextFromStuff);
请亲切的代码,帮助我,我恳求你。
答案 0 :(得分:3)
expect()
方法可以隐式解析并使用结果与实际数据进行比较。您可以使用下面的内容,
for (var ii = 0; ii < stuff.length; ii++) {
var aTile = element(by.id(stuff[ii].id)).getText();
expect(aTile.getText()).toContain(stuff[ii].name) //This will take care of resolving the promises.
}
方法-2:
由于您使用的是for循环,因此需要使用闭包来获取promise中ii
的值。尝试以下代码。
for (var ii = 0; ii < stuff.length; ii++) {
function closure(index){
element(by.id(stuff[index].id)).getText().then(function(text){
expect(text). toContain(stuff[index].name)
})
}
closure(ii)
}
答案 1 :(得分:2)
我是上面的答案。这应该工作
for (var ii = 0; ii < stuff.length; ii++) {
var aTile = element(by.id(stuff[ii].id));
expect(aTile.getText()).toContain(stuff[ii].name)
}