Cypress 不建议条件测试,还有哪些其他方法可以在不编写片状测试的情况下实现这一目标

问题描述 投票:0回答:1

我们的应用程序中有一张表:
如果表格长度大于 5,则显示分页,如果长度小于 5,则不显示
Cypress 认为在 Cypress 测试中使用条件不是一个好的做法。
处理这种情况的最佳做法是什么?

如果我编写一个分页测试用例,那么当它没有足够的数据并且不在表格上显示分页时。那么带有分页的表就会失败。
当我们有足够的数据并且它显示分页时,没有分页的测试就会失败。

我详细研究了有关条件测试的赛普拉斯文档,但没有在这里找到解决方案:https://docs.cypress.io/guides/core-concepts/conditional-testing#What-youll-learn

我详细研究了赛普拉斯有关条件测试的文档,但没有找到解决方案。

我尝试在

should()
then()
中传递回调以实现链接目的,但仍然不走运。

reactjs cypress e2e-testing e2e cypress-conditional-testing
1个回答
0
投票

我建议使用一种策略,使您的测试不需要“条件”检查。我认为最简单的解决方案是使用

cy.intercept()
来存根您的网络请求并强制您的测试具有(或不具有)分页。

describe('tests', () => {
  it('tests pagination', () => {
    cy.intercept('/my-url', { fixture: 'pagination.json' });
    cy.visit('/my-website');
    // my tests for pagination
  });

  it('tests no pagination', () => {
    cy.intercept('/my-url', { fixture: 'no-pagination.json' });
    cy.visit('/my-website');
    // my tests for no pagination
  });
});

上面的示例在两种情况下设置截距,使用

fixture
选项填充存根。有许多替代方法可以实现此目的,所有这些都在
cy.intercept()
文档中突出显示。

我为什么要存根?

您的测试正在验证给定某些条件(具体来说,当有一定数量的数据时),您将获得分页选项(或相反)。就是这样 - 测试不是测试后面的数据结束是否正确,或与测试相关的任何其他因素。因此,排除所有您无法控制的因素(在本例中为 API 响应),以便您的测试完全在您的控制范围内。

但这不会给我留下覆盖范围的空白吗?如果 API 发生变化或出现故障怎么办?

它确实给您留下了覆盖范围的空白。但是,通过依赖在这些测试中的数据响应,你会让自己感到沮丧。您应该进行专门针对这些其他差距的测试,以便确保满足这些特定条件。这些测试呢?他们只是在研究分页 UI 的工作原理 - 如果我有 X 个响应,我可以获得正确的分页 UI 吗?

© www.soinside.com 2019 - 2024. All rights reserved.