cypress cy.route 行为不一致

问题描述

我正在尝试使用 cypress 5.2 找出一条路线。我有一个简单的功能来做到这一点:

function mockAlertsResponses(){
  cy.route({
    method: "GET",url: "/api/polling/alerts/statistics*",response: {
      total: 2,...
    }
  });
}

在一组测试中,这工作得很好:

describe("admin and read only permissions",() => {
  it ("all action bar items are enabled with admin permissions",() => {
    cy.login("user","password");
    mockAlertsResponses();

    // Click alert to enable all buttons
    cy.get("#1-checkBox").click()

    cy.get("#mark-alert-button").should("be.enabled");
    cy.get("#delete-alert-button").should("be.enabled");
  });

  // ... a few more similar tests
});

然而,在另一组测试中,我使用了相同的函数

  it("Logs in and out",() => {
    cy.login("username","password");
    mockAlertsResponses()
    cy.get("#vine-appbar").should("be.visible");
    cy.get("#info-button").click();
    cy.get("#info-menu-logout").click();
    cy.get("#login-button");
    cy.get("#vine-appbar").should("not.be.visible");
  });

在第二组测试中,路由没有正确存根,导致错误和测试失败。在这里,您可以看到路由没有被存根,而是抛出了 500 错误

enter image description here

我不确定是什么干扰了这里。我对 cypress 有点陌生,我什至不确定从哪里开始调试它。 cy.server 调用会产生干扰吗?请让我知道我们还需要什么信息才能弄清楚为什么一组存根有效而另一组无效。

如果您想知道,登录函数调用cy.server 并且也有自己的 cy.route

Cypress.Commands.add("login",(username,password,admin = true) => {
  const response = admin ? <jwt1> : <jwt2>
 
  cy.server();
  cy.route({
    method: "POST",url: "/api/login",response
  });
  cy.visit("/logout");

  cy.visit("/");
  cy.wait(100);
  cy.get("#login-error").should("not.be.visible");
  cy.get("#login-username").type(username);
  cy.get("#login-password").type(password);
  cy.get("#login-button").click();
});

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)