问题:
我们有多个测试,我们需要实际检查测试用户的电子邮件作为测试用例步骤。这用于双因素身份验证和电子邮件通知测试。
目前,我们使用提供的解决方案here这是基于 mail-listener2
node package .这是我们使用的配置:
email: {
username: "user email here",
password: "user password here",
host: "smtp server address here",
port: 993,
tls: true,
mailbox: "Inbox",
markSeen: true
},
我们在 onPrepare()
函数内的 Protractor 配置中初始化邮件监听器:
var MailListener = require("mail-listener2");
var mailListener = new MailListener(config.email);
mailListener.start();
mailListener.on("server:connected", function(){
console.log("Mail listener initialized");
});
global.mailListener = mailListener;
问题是 - 在大约 10% 的情况下,邮件监听器会失败并显示以下错误消息:
Timed out while authenticating with server
问题:
是什么导致了这个问题,我们可以做些什么来使邮件监听器正常工作?另外,是否可以在失败时重试身份验证?
最佳答案
这是一个异步问题。您的邮件监听器正在尝试检查事件“server:connected”。由于这是异步的,因此这可能会或可能不会及时发生。您应该尝试做的是将其包装在一个 promise 中,并在“server:connected”事件之后解决。
onPrepare: {
return new Promise((resolve, reject) => {
var MailListener = require("mail-listener2");
var mailListener = new MailListener(config.email);
mailListener.start();
mailListener.on("server:connected", function(){
console.log("Mail listener initialized");
resolve();
});
// if you run into an error on connecting to the server,
// maybe reject the promise here.
mailListener.on("error", (err) => {
reject(err);
});
global.mailListener = mailListener;
});
}
关于javascript - 邮件监听器偶尔无法通过身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41287150/