gpt4 book ai didi

javascript - 在 Protactor 中调试测试时是否可以解析并查看 Promise 的结果?

转载 作者:行者123 更新时间:2023-11-28 04:44:57 25 4
gpt4 key购买 nike

我正在尝试在 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());

当我运行测试时,尽管 cucumber 规范与屏幕上的表值匹配,但我收到以下错误消息:

断言错误:预期 [ Array(8) ] 深度等于 [ Array(7) ]

我认为由于映射器忽略了第一行第 th 元素,因此 7 应该等于 7,所以我想调试测试。起初,我尝试将 then 添加到 map 中,例如 tableDataRows.map(...).then(console.error) (因为 .map 关闭 Protractor element.all/$$ returns a promise )以输出从 tableDataRows 映射的数据,但这并没有产生任何数据。

我尝试然后使用一个随机函数,该函数甚至不使用解析的输出来查看它是否正在执行,但它没有 - 所以我认为这只是一个 then 并没有解决 promise 。

.then(function() {
console.error("I executed");
// this didn't work either
});
之后,我尝试在返回上方的映射函数中放置一条日志行,因为这似乎正在解决,并且工作了 - 7 次(这是我期望映射器跳过标题行的结果,但是这很令人困惑,因为测试声称数组中有 8 个元素。无论如何..)

因此,chai-as-promised 中的 .to.eventually 正在解决 promise (就像文档所说的那样),但我不明白我的.map() 函数之后的 .then() 没有解决任何问题,或者我的任何其他尝试也没有解决 promise 。

是否可以在不返回包装用于获取期望数据的 promise 的 chai.expect (假定) promise 的情况下解决 promise ? -- 我还注意到,如果我只是使用 chai.expect(...).to.eventually.equal(...) 而没有前面的 return,则什么也解决不了。

最佳答案

一位同事最终为我指明了正确的方向。我的早期尝试之一就是答案 - 将 .then 添加到 .map 链,但是当我测试时,我没有返回 chai.expect () 这一切。通过将其放在那里并返回,所有的 promise 都得到了解决,我得到了我正在寻找的输出。

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()
};
}
}).then(function(resolvedMap) {
console.error(resolvedMap);
});
return chai.expect(dataToTest).to.eventually.deeply.equal(tableSpec.hashes());

关于javascript - 在 Protactor 中调试测试时是否可以解析并查看 Promise 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43462592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com