Cypress,验证是否实际未进行调用

问题描述 投票:0回答:1

我正在尝试在 cypress 测试中检查 API 调用是否只进行一次。

然后我尝试继续进行更改,并且我想验证这些调用实际上并未进行。

  it("update statement from the map is edited and sent only once", () => {
    cy.intercept("POST", mapsPath, { fixture: "initDefaultMap.json" }).as("saveMap");
    cy.intercept("POST", lrsPath, { fixture: "statementOpened.json" }).as("statementUpdatedMap");

    cy.get('[data-cy="canvas"]').click();
    cy.get("zt-color-picker[icon='bg-color']").shadow().find("zt-button").shadow().find(".zt-button").click();
    cy.get("zt-color-picker[icon='bg-color']")
      .shadow()
      .find("#color-picker-submenu > ul > li.color-boxes[data-color='#99FFCC']")
      .click();

    cy.wait("@statementUpdatedMap").then((evt) => expect(extractVerb(evt)).to.be.equal("updated"));
    cy.wait("@saveMap");
    cy.intercept("POST", lrsPath, cy.spy());
    cy.get('[data-cy="edit-title"]').click();
    cy.get("body [data-cy='input-title'] input").clear().type("mappa bella");
    cy.get('[data-cy="canvas"]').click();
    cy.wait(1000).then(() => expect(cy.spy()).not.to.be.called);
    cy.get("zt-color-picker[icon='bg-color']").shadow().find("zt-button").shadow().find(".zt-button").click();
    cy.get("zt-color-picker[icon='bg-color']")
      .shadow()
      .find("#color-picker-submenu > ul > li.color-boxes[data-color='#5533FF']")
      .click();
    cy.wait(1000).then(() => expect(cy.spy()).not.to.be.called);
  });

我尝试使用 cy.spy(),但没有成功

cypress cypress-intercept
1个回答
0
投票
可以通过

cy.intercept()

 查询别名(通过 
cy.as()
)的 
cy.get()
调用。我们可以将其与 (记录不足)
@alias.all
请求结合起来,以获取使用别名的整个次数列表(在本例中为触发拦截的次数),并使用该结果的长度来验证该电话只打过一次。

假设

statementUpdatedMap
别名是您要验证的调用仅被调用一次...

  it("update statement from the map is edited and sent only once", () => {
    cy.intercept("POST", mapsPath, { fixture: "initDefaultMap.json" }).as("saveMap");
    cy.intercept("POST", lrsPath, { fixture: "statementOpened.json" }).as("statementUpdatedMap");

    cy.get('[data-cy="canvas"]').click();
    cy.get("zt-color-picker[icon='bg-color']").shadow().find("zt-button").shadow().find(".zt-button").click();
    cy.get("zt-color-picker[icon='bg-color']")
      .shadow()
      .find("#color-picker-submenu > ul > li.color-boxes[data-color='#99FFCC']")
      .click();

    cy.wait("@statementUpdatedMap").then((evt) => expect(extractVerb(evt)).to.be.equal("updated"));
    cy.wait("@saveMap");
    cy.get('[data-cy="edit-title"]').click();
    cy.get("body [data-cy='input-title'] input").clear().type("mappa bella");
    cy.get('[data-cy="canvas"]').click();
    cy.get('@statementUpdatedMap.all').should('have.length', 1); // validating length of yielded calls is one
    cy.get("zt-color-picker[icon='bg-color']").shadow().find("zt-button").shadow().find(".zt-button").click();
    cy.get("zt-color-picker[icon='bg-color']")
      .shadow()
      .find("#color-picker-submenu > ul > li.color-boxes[data-color='#5533FF']")
      .click();
    cy.get('@statementUpdatedMap.all').should('have.length', 1); // validating length of yielded calls is one  });
© www.soinside.com 2019 - 2024. All rights reserved.