因此,我正在使用Cypress编写e2e自动化测试。为了使我的测试保持原子性,我尝试为该特定测试生成所需的数据。
因此,例如,我尝试从一个干净的数据库开始(运行迁移),并通过Cypress API请求生成一个用户。
问题是使用devise-jwt时,我需要发送auth:bearer令牌。这通常是在登录时生成的。这就是问题所在:要发出创建用户的POST请求,我需要在没有用户登录的情况下将令牌发送到authenticate....but,并获取令牌,因为我不知道令牌是什么。
我讨厌只有一个用户作为数据库的种子,因为我试图保持最小的依赖性,并尽可能地测试原子。有没有办法通过设计“获取/生成”身份验证令牌,并以某种方式在我的测试中使用它?
这是一个Rails/React应用程序。
发布于 2021-09-04 01:10:20
我不知道获取devise-jwt令牌的工作流程,但如果结果是cookie、sessionStorage或localStorage值,您可以使用cy.session()保存它。
Cypress.config('experimentalSessionSupport', true)
beforeEach(() => {
cy.session('mySession', () => {
// this "setup" callback is called once only,
// thereafter results are returned from cache
// actions to seed database, get user data
const window = cy.state('window')
window.fetch(LOGIN_URL, dataWithLoginInfo).then(response => {
const jwt = response.headers.get('Authorization').split('Bearer ')[1];
window.sessionStorage.setItem('jwt', jwt) // this is now cached - same token each time
})
})
})
it('uses jwt token', () => {
const token = cy.state('window').sessionStorage.getItem('jwt')
const headers = { Authorization: `Bearer ${token}` }
...
})https://stackoverflow.com/questions/69051447
复制相似问题