我正在尝试在 CucumberJS/Protractor/Chai-as-promised 堆栈中调试测试。
var tableDataRows = $('.example-table-under-test').$$('tr');
var dataToTest = tableDataRows.map(function(rows, index) {
if (index > 0) {
var cells = rows.$$('td');
return {
'ATTRIBUTE A': cells.first().getText(),
'ATTRIBUTE B': cells.get(1).getText(),
'ATTRIBUTE C': cells.get(2).getText(),
'ATTRIBUTE D': cells.get(3).getText(),
'ATTRIBUTE E': cells.get(4).getText(),
'ATTRIBUTE F': cells.get(5).getText()
};
}
});
return chai.expect(dataToTest).to.eventually.deeply.equal(tableSpec.hashes());
当我运行测试时,尽管黄瓜规格与屏幕上的表值匹配,但我收到以下错误消息:
AssertionError: expected [ Array(8) ] to deeply equal [ Array(7) ]
我想既然映射器忽略了第一行th
元素,7 应该等于 7,所以我想调试测试。起初我尝试只添加类似then
(因为量角器/ $$返回一个 promise)以输出从 映射的数据,但这并没有产生任何数据。map
tableDataRows.map(...).then(console.error)
.map
element.all
tableDataRows
我尝试then
了一个随机函数,它甚至不使用已解析的输出来查看它是否正在执行,并且它没有 - 所以我认为只是 athen
没有解决承诺。
.then(function() {
console.error("I executed");
// this didn't work either
});
之后,我尝试在返回上方的 map 函数中放置一条日志行,因为这似乎正在解决,并且有效 - 7 次(这是我期望映射器跳过标题行的结果,但这很令人困惑,因为测试声称数组中有 8 个元素。无论如何..)
所以.to.eventually
in正在以某种方式chai-as-promised
解决承诺(就像文档所说的那样),但我看不到我的.then()
after.map()
函数没有解决任何问题,或者我的任何其他尝试也没有解决承诺。
是否可以在不返回chai.expect
包装用于获取期望数据的承诺的(假定的)承诺的情况下解决承诺?- 我还注意到,如果我没有chai.expect(...).to.eventually.equal(...)
事先返回,任何事情都不会解决。