如何测试涉及电子邮件确认的用户流程?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (9)

我的意思是功能或E2E测试。对于通用流程来说,这一点都很清楚,但是当谈到交易电子邮件(注册确认,密码重置,购买通知等)时,它仍然会带来问题。经过一番研究,我提出了一些想法。一种是利用Restmail.net API(这里有Selenium WebDriver和赛普拉斯的例子 - http://dsheiko.com/weblog/testing-sign-up-flow-with-activation-by-email)。它是免费的,但API是公开的。因此,它不适合具有潜在敏感信息的电子邮件。另一种通过IMAP桥接器或Gmail API访问Gmail收件箱的方法(此处为说明和代码段 - https://docs.puppetry.app/testing-emails/example-with-imap-bridge)。但同样,这是一个解决方法。

我知道有些人喜欢Sendgrid,Mailgun,Email Yak,Postmark。我不想付那么多钱。那么你们怎么做呢?这对你有用吗?

提问于
用户回答回答于

您可以为“忘记密码”创建一个发布请求,然后对其进行断言。

就像是:

    cy.visit('yoursite')
    cy.get('#forgotpassword').click().then(function (xhr) {
    cy.server()
    cy.request('POST', 'APIforForgotPassword').as('sucessfullemail)
    })
    cy.get(@sucessfullemail).then(function (xhr) {
    expect(xhr.status).to.eq(200)
用户回答回答于

我们正在为我们的测试用户使用Mailosaur电子邮件地址。然后,我们使用cypress自定义命令来查询Mailosaur以获取预期的电子邮件。这很容易设置。

这是该自定义命令的主要部分,这是我们为开始进行电子邮件测试而必须添加的所有内容。你可以参考他们的API文档为了什么querymailusaurServer以及MailosaurApiKey应该的。

Cypress.Commands.add("getEmailFromMailService", query => {
  return cy
    .request({
      method: "POST",
      url: `https://mailosaur.com/api/messages/await?server=${mailosaurServer}`,
      body: query,
      headers: { "Content-Type": "application/json" },
      auth: { user: mailosaurApiKey },
    })
    .then(response => {
      expect(response.status).to.equal(200);
      return response.body;
    });
});

扫码关注云+社区

领取腾讯云代金券