为什么cy.intercept/cy.wait无法捕获我的HTTP请求?

Why won't cy.intercept/cy.wait catch my HTTP request?

提问人:VineAndBranches 提问时间:11/14/2023 最后编辑:VineAndBranches 更新时间:11/14/2023 访问量:31

问:

我正在尝试编写 Cypress (v13.1.0) 单元测试并用于捕获 HTTP 调用。此调用在用户按下按钮后发生。根据阅读文档,我按以下顺序设置测试:-{userActionHere}-。但是,呼叫永远不会被拦截。cy.interceptGETGETcy.interceptcy.waitGET

例:

describe("API Tests", () => {
  it("get copy-style", () => {
    cy.intercept("GET", "http://localhost:7771/api/agent/report/copy-style").as("getStyle");

    openReport(undefined, testReport_demo);
    cy.visit("/#/");

    cy.get("rec-list").find('[data-cy="acceptButton"]').click();

    cy.wait("@getStyle").then((interception) => {
      console.log("The @getStyle result: ", interception);
    });
  });
});

结果:

Timed out retrying after 5000ms: cy.wait() timed out waiting 5000ms for the 1st request to the route: getStyle. No request ever occurred.

我还尝试了以下方法,但结果相同,没有拦截:

  • 捕获任何 HTTP 请求(例如 ),但它仍然不会被拦截。cy.intercept("**")
    • 在这种情况下,我们抓住了一些要求某些图像资产的电话,但这些与我想要的无关。我没有一个电话被捕获。GET/api/agent/**
  • 使用各种路径变体(例如,“api/agent/report/copy-style”、“api/agent/**”、“**api**”等)。cy.intercept
  • 移动按钮点击前。wait
  • 增加等待超时(例如,cy.wait("@getStyle", {timeout: 30000})
  • 用于在等待之前手动单击 UI 中的按钮。cy.pause()
  • 在 期间手动单击该按钮。cy.wait()

在所有情况下,我都可以看到通过 WireShark 和/或浏览器的“网络”选项卡进行的 HTTP 调用,并且返回正确的响应数据,但 Cypress 没有看到它。看到很多帖子提到,但这些帖子似乎已被弃用。还没有找到对我有帮助的帖子。cy.servercy.route

单元测试 xmlhttprequest cypress-intercept

评论


答: 暂无答案