这是我最近解决的问题。希望该解决方案也适用于您的用例。
先决条件:
mail-listener2
包- 对概念的理解
promises
分步说明:
- 安装
mail-listener2
:
npm install mail-listener2 --save-dev
- 在量角器配置中, 初始化Mail Listener 并使其全局可用:
onPrepare: function () { var MailListener = require("mail-listener2"); // here goes your email connection configuration var mailListener = new MailListener({ username: "imap-username", password: "imap-password", host: "imap-host", port: 993, // imap port tls: true, tlsOptions: { rejectUnauthorized: false }, mailbox: "INBOX", // mailbox to monitor searchFilter: ["UNSEEN", "FLAGGED"], // the search filter being used after an IDLE notification has been retrieved markSeen: true, // all fetched email willbe marked as seen and not fetched next time fetchUnreadOnStart: true, // use it only if you want to get all unread email on lib start. Default is `false`, mailParserOptions: {streamAttachments: true}, // options to be passed to mailParser lib. attachments: true, // download attachments as they are encountered to the project directory attachmentOptions: { directory: "attachments/" } // specify a download directory for attachments }); mailListener.start(); mailListener.on("server:connected", function(){ console.log("Mail listener initialized"); }); global.mailListener = mailListener; }), onCleanUp: function () { mailListener.stop(); },
- 创建一个帮助
getLastEmail()
函数,该函数将等待email
检索到:
function getLastEmail() { var deferred = protractor.promise.defer(); console.log("Waiting for an email..."); mailListener.on("mail", function(mail){ deferred.fulfill(mail); }); return deferred.promise; };
- 测试用例示例:
describe("Sample test case", function () { beforeEach(function () { browser.get("/#login"); browser.waitForAngular(); }); it("should login with a registration pre sent to an email", function () { element(by.id("username")).sendKeys("MyUserName"); element(by.id("password")).sendKeys("MyPassword"); element(by.id("loginButton")).click(); browser.controlFlow().await(getLastEmail()).then(function (email) { expect(email.subject).toEqual("New Registration Code"); expect(email.headers.to).toEqual("myemail@email.com"); // extract registration pre from the email message var pattern = /Registration pre is: (w+)/g; var regCode = pattern.exec(email.text)[1]; console.log(regCode); }); }); });
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)