首页 > 解决方案 > 如何从赛普拉斯的 beforeEach 中删除所有 cy.route

问题描述

我正在为我公司的应用程序创建大量测试。在每次测试之前,我需要创建一个状态来处理它,它总是一样的,所以我在自己的方法中创建了一些路由,然后在我创建的 beforeEach 的 support/index.js 文件中,看起来像这样

beforeEach(() => {
    cy.server();
    cy.mockSearches(SHORTEN_SEARCHES); // this only creates mocks
    cy.loginAdmin();
});

在 99% 的测试中,它运行良好,但有一个测试需要处理真实数据。我应该怎么办?有没有办法忽略全局 beforeEach?我想我可以将这部分代码移动到每个测试之前的每个测试,但那是代码重复?或者也许我应该用空响应覆盖这个 cy.route?

标签: javascripttestingcypresse2e-testing

解决方案


您可以beforeEach()在设置之前向您的退出添加条件:

beforeEach(() => {
    if (shouldUseRealData) return;
    cy.server();
    cy.mockSearches(SHORTEN_SEARCHES); // this only creates mocks
    cy.loginAdmin();
});

如有关环境变量的文档中所述,您可以通过不同的方式设置环境变量。一种方法是在调用 cypress run 时在命令行中设置它:

cypress run --env use_mock=true

然后你可以将它与Cypress.env('use_mock').

beforeEach(() => {
    if (Cypress.env('use_mock')) {
        cy.server();
        cy.mockSearches(SHORTEN_SEARCHES); // this only creates mocks
        cy.loginAdmin();
    }
});

推荐阅读