赛普拉斯布尔断言

Cypress boolean assertion

我有一个显示查询结果的 table。 我使用这个检查 table 包含结果:

cy.get("table", {timeout: 60000}).find("tr[data-index]").should("have.length.gt", 1);

但是因为我有不同的数据源,所以我想同时检查两种情况:我得到一些结果的情况和我得到 0 个结果的情况。在后者中,我会检查是否存在消息“未找到结果”。我该如何做这个“双重”断言?

您可以使用 and() 进行多个断言,例如:

cy.get("table", {
    timeout: 60000
  }).find('tr[data-index]')
  .should('have.length', 0)
  .and('contain', 'No results found')

如果您想检查两个条件之一是否为真,您可以这样做:

cy.get("table", {
    timeout: 60000
}).find('tr[data-index]').then(($ele) => {
    if ($ele.length == 0 || $ele.text() == 'No results found') {
        //Do Something 
    }
    else {
        //Do Something 
    }
})

在这里看看我的回答(抱歉,它很长)。

您可以使用 .should('statisfy', callback) 测试多个 OR 条件。

如果满足任一条件,则假设测试应该通过,

cy.get("table", {timeout: 60000})
  .find("tr[data-index]")          // presumes there's at least one row
  .should("satisfy", ($els) => {
    return $els.length > 1 || $els.text().includes('No results found');
  });

与 Cypress 中的任何分支代码一样,命令只会成功或失败 - 您必须深入研究 jQuery 才能执行条件操作。