【发布时间】:2021-12-17 19:03:35
【问题描述】:
我一直在尝试使用 Cypress 的拦截方法拦截服务器请求。 我注意到 Cypress 可以拦截通过前端/浏览器发出的请求,但是,如果我直接向后端服务器发出请求,则拦截方法不起作用。
让我澄清一下我的意思:
- 一件事是拦截前端/浏览器向后端服务器发出的请求。
- 另一件事是拦截不使用浏览器但直接调用后端端点的调用。
例如: 我可以使用前端界面创建用户 或者我可以创建一个用户直接调用后端端点(直接调用服务器)。
回到我的问题。有没有办法拦截直接对后端端点进行的调用?
这是我迄今为止尝试过的:
- 我写了一个正则表达式来拦截
api/v0/customers - 然后我向
http://locahost:5440/api/v0/customers(这是服务器的URL)发出请求 - 最后,我等待请求发生
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);
});
问题是:出现超时错误。
- 正如您在图片中看到的,我正在向
http://locahost:5440发出请求,这是服务器 URL。注意:我确保服务器已启动并正在运行。 - 正则表达式也是正确的,它将匹配端点
http://locahost:5440/api/v0/customers
我怀疑拦截仅适用于通过浏览器发出的请求。这个说法正确吗?我在赛普拉斯文档的任何地方都找不到这个答案。 有没有办法让我拦截直接向服务器发出的调用(不使用浏览器)?
【问题讨论】:
标签: testing integration-testing cypress