typescript-等待拦截的请求未按预期工作
发布时间:2022-08-06 17:53:53 210
相关标签: # es6
验证电子邮件后,我需要检查更改的电子邮件验证令牌的状态。
首先我创建一个用户,然后我得到发送给用户的电子邮件验证 URL,最后访问这个链接。
访问应用程序链接时,它会将身份验证令牌发送到 API 以将电子邮件标记为已验证。我需要 cypress 来等待 API 响应,所以我可以继续测试...
it('ensure create a user and verify the email address', () => {
// Create the user
cy.request('POST', 'app/sign-up.json', {
user: {
userName: 'new_user',
email: 'm@d.c',
password: 'password',
fullName: 'new user full name'
}
}).should((response) => {
expect(response.status).to.eq(201)
// Check if user has been created in database
cy.task('prisma:user:findMany', {}).then(async (result: any) => {
expect(result.length).to.eq(1)
// Get email verification link
cy.task<Array<BeeQueue.Job>>('beeQueue:emailService:getJobs', 'waiting')
.should('exist')
.should('have.length', 1)
.then((result) => {
if (result[0].data.text !== null && result[0].data.text !== undefined) {
const tokenUrl = result[0].data.text.substring(result[0].data.text.lastIndexOf('http://'))
// Intercept API request
cy.intercept('GET', '/app/verify_email.json?*').as('verifyEmail')
cy.visit(tokenUrl.substring(tokenUrl.indexOf('/app')))
//
// Here the logic doesn't work, cypress doesn't wait for the request response
//
cy.wait('@verifyEmail').its('response.statusCode').should('equal', 200)
}
})
})
})
})
在图像中,我们可以看到请求发生在.wait() 在图像中我们可以看到请求发生在 wait() 之后
在下一张图片中,我在等待拦截之前使用了等待.wait(2000)
cy.wait(2000)
cy.wait('@verifyEmail').its('response.statusCode').should('equal', 200)
我不认为这种方式(使用固定等待)是明智的做法。但是如果只有这种方式,那为什么还要使用wait with intercept呢?
在这张图片中,我在拦截等待之前使用了等待(2000)
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报