微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cypress cy.route 行为不一致

如何解决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 举报,一经查实,本站将立刻删除。