Javascript 量角器、承诺、参数和闭包

Javascript 量角器、承诺、参数和闭包,javascript,parameters,closures,protractor,Javascript,Parameters,Closures,Protractor,我现在正把剩下的一点点头发拔掉。 我想我的左膝失明了 我有两个功能可以工作。 每一个都正确地获取一个参数。 我会非常非常非常喜欢一个函数同时接受两个参数 我有一个超级简单的数据结构: var stuff = [ { name: "Stone", id: "cc45" }, { name: "Hanley", id: "cc78" } ]; 我希望循环遍历该结构,并对每个结构运行一个超级简单的测试。请注意: for (var ii = 0;

我现在正把剩下的一点点头发拔掉。 我想我的左膝失明了

我有两个功能可以工作。 每一个都正确地获取一个参数。 我会非常非常非常喜欢一个函数同时接受两个参数

我有一个超级简单的数据结构:

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 */
      );
  }
在版本B(也缺乏魔力)中,我可以成功地看到我希望将量角器抓取的文本与之进行比较的数据:

  aTile.getText().then((function (test) {
      console.log(" ==Stuff test==" + test);
  })(stuff[ii].name));
不管我拔了多少头发,我都不能做的是用量角器来比较两者。实际上,我需要补充一点:

   expect(protractorGrabbedText).toContain(expectedTextFromStuff);

我恳求你,请你帮帮我。

这很简单
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.
 }

我支持上述答案。这应该行得通

for (var ii = 0; ii < stuff.length; ii++) {
    var aTile = element(by.id(stuff[ii].id));
    expect(aTile.getText()).toContain(stuff[ii].name)
        }
for(var ii=0;ii
所以您尝试了
expect(aTile.getText()).toContain(stuff[ii].name)
?不,我不知道它会这样工作!愚蠢的我:)但我想要一些日志记录,这让我受挫-它仍然是一种享受!太棒了,方法2很完美,我可以在里面做额外的记录。现在,我可以很清楚地看到我以前尝试的错误——干杯!方法1确实需要aTile.getText(),我在
var aTile=element(by.id(stuff[ii].id)).getText()中提到了
.getText()
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) }
for (var ii = 0; ii < stuff.length; ii++) {
    var aTile = element(by.id(stuff[ii].id));
    expect(aTile.getText()).toContain(stuff[ii].name)
        }