我正在尝试在 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(),但没有成功
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 });