赛普拉斯拦截不覆盖赛普拉斯别名

cypress intercept not overriding cypress alias

我正在做一些测试,我拦截了对同一个 url 的一些 api 调用,我在 beforeEach 之前做了一个,然后在测试中做了另一个,但出于某种原因我没有明白我改变了别名。我正在做一些阅读,覆盖是固定的,但显然不是? 请随时提出更多问题。 希望我能得到一些意见。

我的代码:

// Describe block:

  beforeEach(() => {
    cy.visit("/");
    cy.intercept(
      {
        method: "GET",
        url: "/customers*",
        hostname: "local.api",
      },
      {
        fixture: "customers.json",
      }
    ).as("customers");
    cy.get("[class^=ant-menu-item]", { multiple: true }).eq(1).click();
    cy.wait("@customers");
  });



  [
    ["customerName", "ASC", 0],
    ["nextReviewDate", "ASC", 1],
    ["nextReviewType", "ASC", 2],
  ].forEach(([sortValue, sortOrder, index]) => {
    it(`Sort by direction ${sortOrder} order ${sortValue}`, () => {
      cy.get(".ant-table-column-sorters", { multiple: true }).eq(index).click();
      cy.intercept("GET", "/customers*").as("request");
      cy.wait("@request").then((interception) => {
        cy.wrap(interception.response.statusCode).should("eq", 200);

        cy.wrap(interception.request.url).should(
          "include",
          `https://allica.local.api/customers?page=1&sortBy=${sortValue}&pageSize=5&direction=${sortOrder}`
        );
      });
    });
  });

出现以下错误:

如果没有overriding,如何克服这个考验?

提前致谢。

拦截是一个事件侦听器。必须在事件触发前设置

cy.intercept("GET", "/customers*").as("request");
cy.get(".ant-table-column-sorters", { multiple: true }).eq(index).click();
cy.wait("@request").then((interception) => {
  ...

实际上,测试之间的拦截没有变化,所以你可以只设置一次并等待多次

before(() => cy.intercept("GET", "/customers*").as("request"))

[
  ["customerName", "ASC", 0],
  ["nextReviewDate", "ASC", 1],
  ["nextReviewType", "ASC", 2],
].forEach(([sortValue, sortOrder, index]) => {
  it(`Sort by direction ${sortOrder} order ${sortValue}`, () => {
    cy.get(".ant-table-column-sorters").eq(index).click();
    cy.wait("@request").then((interception) => {