我正在发送多个 API 请求并且一切正常,直到我尝试导航到 API 测试期间生成的页面。当我使用 cy.visit() 函数导航到页面时,我得到了未经授权,并且所有后续请求都在没有授权 token 的情况下发送,即使我将授权 header 添加到 cy.visit()
函数。
任何帮助将不胜感激
var accessToken
before(function () {
cy.request({
method: 'POST',
url: 'https://someurl.com/connect/token',
form: true,
body: {
grant_type: 'password',
username: 'admin',
password: 'pass',
client_id: 'client_id',
client_secret: 'secret'
}
}).then((response) => {
accessToken = response.body.access_token
})
})
//api requests
it('Navigates to order page', () => {
cy.visit(`https://someurl.com/orders/${orderId}`, { auth: { bearer: accessToken.replace('Bearer ', '') } })
})
最佳答案
您的代码看起来像 Cypress Docs: Core Concepts: Aliases 中的反模式示例例子。使用as要创建别名,您可以执行以下操作:
before(function () {
cy.request({
method: 'POST',
url: 'https://someurl.com/connect/token',
form: true,
body: {
grant_type: 'password',
username: 'admin',
password: 'pass',
client_id: 'client_id',
client_secret: 'secret'
}
}).then((response) => {
cy.wrap(response.body.access_token).as('accessToken')
})
})
//api requests
it('Navigates to order page', function() {
const accessToken = this.accessToken
cy.visit({
url: `https://someurl.com/orders/${orderId}`,
headers: {
'Authorization': accessToken
}
})
})
注意:有必要将 it()
block 的闭包从箭头函数更改为常规函数,因为箭头函数使用词法作用域 this
,并且不会包含在 before()
闭包中创建的别名。
关于javascript - Cypress 在使用 cy.visit() 时注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63251334/