8

所以我正在编写一些用于在网站上创建帐户的 E2E 测试。创建网站帐户后,网站会向我发送一封电子邮件以验证我的帐户,以便我可以登录。我的问题是,E2E 测试应该走多远?如果我使用量角器去谷歌,找到电子邮件,然后单击链接以验证自己,我会不会走错方向。然后返回网站并登录?我的另一个可能的选择是以某种方式获取我的用户 ID,然后发送验证请求?

我只是不确定哪个方向最好。有任何想法吗?

4

2 回答 2

4

您的测试应该走多远几乎是有争议的。但是,如果通过电子邮件发送的测试信息对测试很重要,您应该考虑在测试运行期间提取该信息。

换句话说,这就是所谓的“端到端测试”,但两端都可能超出我们习惯思考和考虑的范围。

这是在两因素身份验证功能测试期间为我工作的使用mail-listener2nodejs 库的解决方案(注册码在通过用户名/密码验证步骤后发送到电子邮件)。

于 2015-04-01T04:52:26.817 回答
1

就我个人而言,我确实测试了一封包含正确内容的验证电子邮件 - 但是,我没有登录 Google 来查找电子邮件。相反,我公开了一个服务器端函数,该函数返回它发送到某个电子邮件地址的最新电子邮件。这是我如何使用它:

b.get(origin + '/-/e2e/last-email-sent?to=' + address, (response) => {
  var responseObj = JSON.parse(response.body);
  // Now I have the email text in responseObj.bodyHtmlText.
  // Let's extract the URL to the next page:
  // (it's the first thing we find that starts with our server origin, i.e.
  // http://whatever/....)
  var regexString = originRegexEscaped + '\\/[^"]+';
  var matches = responseObj.bodyHtmlText.match(new RegExp(regexString));
  if (!matches) {
    b.assert.fail(responseObj.bodyHtmlText, regexString,
      'No next-page-link regex match in email');
  }
  else {
    // Tell our e2e browser to go to the page linked in the email
    // as if the user had clicked the link in the email.
    b.url(matches[0]);
  }
});

我还将添加许多其他有趣的 e2e 测试服务器端功能,例如/-/e2e/fast-forward-time?how-much=3600-seconds :-)

我使用真正的 Gmail 用户(为 e2e 测试创建的真正的 Gmail 帐户,仅此而已)进行的测试只是注册。即 OpenAuth 登录有效。如果可行,我将假设任何 Gmail 用户此后都能够阅读电子邮件。

于 2015-11-28T06:39:18.307 回答