首页 > 解决方案 > 如何在 cy.route 响应回调中访问请求正文?

问题描述

我已经构建了一些可以捕获网络请求并将它们保存到文件中的东西。目前我正在尝试构建第二部分,它应该返回这些捕获的请求,但遇到了一些困难。有时我有多个请求转到单个方法/url 组合,我需要根据请求正文返回不同的响应。下面的示例说明了我面临的问题:

cy.route({
    url: 'api.example.com/**',
    method: myMethod,
    response: routeData => {
        // I can set the response here
        // But I don't have access to the request body
    },
    onRequest: xhr => {
        // I can access the request body here
        // But I am not supposed/able to set the response
    },
})

如果我正确理解 API 文档,我应该在response回调中设置响应。但是,在该回调中,我似乎无法访问可以从中读取请求正文的 XHR 对象。

有没有办法在response回调中访问请求正文?或者,有没有办法设置onRequest回调的响应?


更新:刚刚看到这篇文章提到了一个body可以添加到cy.route选项对象的属性。我在cypress route 文档中没有看到这一点,所以我不知道这是否是一个有效的选项,我也不知道是否cy.route使用相同的methodand进行多次调用url,但不同的调用body会产生正确的结果. 如果这有任何用处,我希望看到一些基于此文件中某处body属性的分支逻辑,所以我不抱太大希望。

标签: cypress

解决方案


赛普拉斯 v6 附带cy.interceptAPI。使用它比使用cy.serverand方便得多cy.route


推荐阅读