【发布时间】:2019-10-31 15:05:45
【问题描述】:
我添加了一个命令 getCSRFToken,其他命令使用它来获取 CSRF 令牌以向我的应用发出请求:
Cypress.Commands.add("getCSRFToken", () => {
cy.getCookie('XSRF-TOKEN').then((cookie) => {
if (!cookie) {
return cy.request('HEAD', '/')
.its('headers')
.then((headers) => {
const token = headers['x-xsrf-token'];
if (!token) {
throw new Error('XSRF token not found');
}
return cy.setCookie('XSRF-TOKEN', token)
.then(() => token);
});
}
return cookie.value;
});
});
发出HEAD请求的部分是为了在测试中还没有访问过任何页面时使用此功能,例如在发出POST请求创建测试数据时。
AFAICT 这看起来应该对我有用,但似乎随后对getCookie 的调用实际上并没有检索到任何东西:
我认为返回 setCookie 承诺和 getCookie 承诺可能会有所作为,但事实并非如此。
【问题讨论】: