赛普拉斯能否拦截直接向服务器发出的请求?

Can Cypress intercept requests being made directly to a server?

我一直在尝试使用 Cypress 的拦截方法拦截服务器请求。 我注意到 Cypress 可以拦截通过 front-end/browser 发出的请求,但是,如果我直接向后端服务器发出请求,拦截方法将不起作用。

让我澄清一下我的意思:

例如: 我可以使用前端界面创建用户 或者我可以创建一个用户直接调用后端端点(直接调用服务器)。

回到我的问题。有没有办法拦截直接对后端端点进行的调用?

这是我目前尝试过的方法:

Timeout request using Cypress intercept method

    cy.intercept(/^\/api\/v0\/customers\/$/).as('createCustomer');
    cy.request(createCustomer(customerData, headers));
    cy.wait('@createCustomer').then(({ status, body }) => {
      const customerId = body.customer_id;
      console.log(body);
      expect(status).equal(201);
    });

问题所在:出现超时错误。

我怀疑拦截仅适用于通过浏览器发出的请求。这个说法正确吗?我在 Cypress 文档的任何地方都找不到这个答案。 有没有办法让我拦截直接向服务器发出的调用(不使用浏览器)?

您不必拦截您明确使用 cypress 发出的请求,只需使用 .then 获取响应,如下所示:

cy.request(createCustomer(customerData, headers)).then((response) => { 
    const customerId = response.body.customer_id; 
    console.log(response.body);
    expect(response.status).equal(201);
});

参考:https://docs.cypress.io/api/commands/request#Yields