好吧,我有一个包含许多行和列的表,我想检查该表是否针对特定列进行了排序。
我尝试使用不同的期望和断言,但是它总是会返回true
。我在这里做错什么吗?
cy.get('table tbody tr').should(function($trs) {
var arrayOftd = $trs.map(function (i, tr) {
return Cypress.$(tr).find('td').eq(3).text()
})
var test = arrayOftd.sort()
expect(arrayOftd).to.deep.equal.(test)
})
true
当排序为升序,false
降序或任何其他顺序时,它必须返回。
这是assert语句的控制台日志
命令:assert cypress_runner.js:172385实际值:(13)[“ 946”,“ 947”,“ 948”,“ 951”,“ 952”,“ 955”,“ 956”,“ 959”,“ 960”, “ 963”,“ 964”,“ 967”,“ 968”] cypress_runner.js:172385预期:(13)[“ 946”,“ 947”,“ 948”,“ 951”,“ 952”,“ 955” ,“ 956”,“ 959”,“ 960”,“ 963”,“ 964”,“ 967”,“ 968”] cypress_runner.js:172385消息:期望[Array(13)]等于[Array(13) ] cypress_runner.js:172385错误:AssertionError:期望[Array(13)]等于[Array(13)]
这可能是个人喜好,但如果确实不需要,我会尽量不使用jQuery语法,以提高可读性。我所做的是:
function getCellTextAsArray() {
let cellContents = [];
return new Cypress.Promise(resolve => {
cy.get("table tbody tr")
.children()
.each(($el, $index) => {
//some logic to select the elements you want
//like $index % 4 == 0
if (...) {
cellContents.push($el.text());
}
})
.then(() => resolve(cellContents));
});
}
然后,您无需担心传递回调即可进行声明:
getCellTextAsArray().then(cellContents => {
let actual = cellContents.slice();
cy.wrap(actual).should("deep.eq", cellContents.sort());
});
因此,这里发生的是我们正在尝试使用更高级别的赛普拉斯命令来捕获所有tds,当我们完成这些操作后,我们将使用tds文本内容来解决Promise,那么进行最终断言是一种简单易懂的操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句