use*_*554 1 javascript jquery node.js cypress
好吧,我有一个包含许多行和列的表,我想检查该表是否针对特定列进行了排序。
我尝试使用不同的期望和断言,但它总是返回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)
})
Run Code Online (Sandbox Code Playgroud)
它必须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)]
小智 5
这可能是个人偏好,但如果我真的不需要,我尽量不使用 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));
});
}
Run Code Online (Sandbox Code Playgroud)
然后你做你的断言而不必担心传递回调:
getCellTextAsArray().then(cellContents => {
let actual = cellContents.slice();
cy.wrap(actual).should("deep.eq", cellContents.sort());
});
Run Code Online (Sandbox Code Playgroud)
所以这里发生的事情是我们正在尝试使用更高级别的 Cypress 命令来获取所有 tds,当我们完成它们时,我们使用 tds 文本内容解析 Promise,然后进行最终断言是一种简单易读的方式.
| 归档时间: |
|
| 查看次数: |
5197 次 |
| 最近记录: |