2015-02-19 13 views
5

Also ich schreibe einige E2E-Tests für die Erstellung eines Kontos auf einer Website. Nach dem Erstellen eines Website-Kontos sendet mir die Website eine E-Mail, um mein Konto zu bestätigen, damit ich mich anmelden kann. Meine Frage ist, wie weit soll die E2E-Testung gehen? würde ich in die falsche Richtung gehen, wenn ich Winkelmesser verwende, um zu Google zu gehen, die E-Mail zu finden und auf den Link zu klicken, um mich zu verifizieren. Dann geh zurück auf die Website und logge dich ein? Meine andere mögliche Wahl wäre, irgendwie meine userID zu erhalten und dann eine Anforderung für Überprüfung zu senden?Winkelmesser E2E-Test: E-Mail-Bestätigung nach dem Erstellen eines Kontos

Ich bin einfach nicht sicher, welche Richtung am besten wäre. Irgendwelche Ideen?

+0

In meiner persönlichen Situation hatte ich das gleiche Dilemma. Meine Route, um es zu lösen, war (wie Sie erwähnten) die userId, um den Verifizierungsprozess über HTTP durchzuführen. – Aaron

+0

Ich wollte die gleiche Frage noch heute stellen :) – alecxe

+0

lol Ich schätze, ich habe dich dazu gebracht, @alexxe; D. – Frank

Antwort

2

Es ist ziemlich strittig, wie weit Ihre Tests gehen sollten. Wenn es jedoch wichtig ist, Informationen zu testen, die per E-Mail gesendet werden, sollten Sie in Betracht ziehen, diese Informationen während des Testlaufs zu extrahieren.

Mit anderen Worten, dies ist so genannte "Ende-zu-Ende-Tests", aber beide Enden könnten jenseits der Grenzen sein, die wir gewohnt sind zu denken und zu betrachten.

Hier ist the solution using mail-listener2 nodejs library, die für mich während der Two Factor Authentication-Funktionalitätstest funktionierte (Registrierungscode wird an eine E-Mail gesendet, nachdem der Benutzername/Passwort-Verifizierungsschritt übergeben wurde).

1

Ich persönlich teste, dass eine Bestätigungs-E-Mail mit dem richtigen Inhalt gesendet wird - ich logge mich jedoch nicht bei Google ein, um die E-Mail zu finden. Stattdessen habe ich eine serverseitige Funktion verfügbar gemacht, die die letzte E-Mail zurücksendet, die sie an eine bestimmte E-Mail-Adresse gesendet hat. Hier ist, wie ich es verwenden:

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]); 
    } 
}); 

Ich werde auch viele andere lustige e2e Test-Server Seite Funktionen hinzufügen, wie /-/e2e/fast-forward-time?how-much=3600-seconds :-)

Was ich Test zu tun, mit einem echten Gmail Benutzer (ein echtes Google Mail-Konto, das ich für e2e-Tests erstellt habe und sonst nichts), sind nur Anmeldungen. I.e. dass der OpenAuth-Login funktioniert. Wenn das funktioniert, gehe ich davon aus, dass jeder Gmail-Benutzer danach E-Mails lesen kann.

Verwandte Themen