0

注意到 Cypress 测试运行程序正在X-CSRFToken从请求标头中删除,这导致请求返回403 Forbidden。这是手动运行和赛普拉斯测试运行的标题截图,

在 Chrome 浏览器中导航时截取的屏幕截图: 在此处输入图像描述

运行 Cypress 测试时截取的屏幕截图: 在此处输入图像描述

为了确认这一点,我通过curl附加X-CSRFToken. 那时它工作得很好。在运行赛普拉斯测试时我该如何处理?

注意:trigger()这发生在使用函数执行拖放事件时

4

1 回答 1

0

it赛普拉斯会在每次测试之间自动清除 cookie,因此虽然您在登录时已正确设置了 cookie,但在该(或specifydescribecontext)块完成后它们将被丢弃。这意味着任何后续的网络请求都将具有新的状态(按设计)。

为了解决这个问题,您可以使用Cypress.Cookies.preserveOncehttps ://docs.cypress.io/api/cypress-api/cookies.html#Preserve-Once

以下是我使用它来解决类似问题的方法:

    beforeEach(() => {
        Cypress.Cookies.preserveOnce('XSRF-TOKEN', 'session_id')
    })

如果您希望在所有测试套件中保持该状态(即:单独的spec.js文件),您可以将其放在您的cypress/support/index.js文件中:

Cypress.Cookies.defaults({
    preserve: ['XSRF-TOKEN', 'session_id']
})
于 2021-03-15T00:34:58.840 回答