返回

typescript-等待拦截的请求未按预期工作

发布时间:2022-08-06 17:53:53 220
# 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)

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像