【问题标题】:How to remove all cy.route from beforeEach in Cypress如何从赛普拉斯的 beforeEach 中删除所有 cy.route
【发布时间】:2020-04-23 12:06:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript testing cypress e2e-testing


    【解决方案1】:

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

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

    如有关environment variables 的文档中所述,您可以通过不同方式设置环境变量。一种方法是在调用 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();
        }
    });
    

    【讨论】:

    • 我应该如何将此变量传递给在每次测试之前调用的 beforeEach ?我正在考虑这样的解决方案,但我不知道如何将变量从测试发送到 beforeEach。
    • 我编辑的答案有帮助吗?您是否能够创建和使用要在 beforeEach() 中使用的环境变量?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    相关资源
    最近更新 更多