Protractor 无法使用dragrator.conf.js onComplete:function()中的NodeEmailer发送电子邮件

Protractor 无法使用dragrator.conf.js onComplete:function()中的NodeEmailer发送电子邮件,protractor,Protractor,无法使用dragrator.conf.js onComplete:function()中的NodeEmailer发送电子邮件。使用了下面的代码,它不执行onComplete块 onComplete: function() { var nodemailer = require('nodemailer'); var transporter = nodemailer.createTransport({ host: 'smtp.gmail.com',

无法使用dragrator.conf.js onComplete:function()中的NodeEmailer发送电子邮件。使用了下面的代码,它不执行onComplete块

onComplete: function() {    
    var nodemailer = require('nodemailer');
    var transporter = nodemailer.createTransport({
        host: 'smtp.gmail.com',
        port: 465,
        secure: true, // use SSL
        auth: {
            user: 'email',
            pass: 'password'
        }
    });
    var mailOptions = {
            from: '"TestMail" <>', // sender address (who sends)
            to: 'receiver's email', // list of receivers (who receives)
            subject: 'Hello through conf', // Subject line
            text: 'Hello world ', // plaintext body
            html: '<b>Hello world </b><br> This is the first email sent with Nodemailer in Node.js', // html body


    };

        transporter.sendMail(mailOptions, function(error, info){
            if(error){
                return console.log(error);
            }

            console.log('Message sent: ' + info.response);
        });
onComplete:function(){
var nodeEmailer=require('nodeEmailer');
var transporter=nodeEmailer.createTransport({
主机:“smtp.gmail.com”,
港口:465,
安全:true,//使用SSL
认证:{
用户:“电子邮件”,
通行证:“密码”
}
});
var mailpoptions={
发件人:“'TestMail”“,//发件人地址(发送人)
收件人:'收件人的电子邮件',//收件人列表(收件人)
主题:“Hello through conf”,//主题行
text:'你好,世界',//纯文本正文
html:“Hello world
这是Node.js”中第一封使用nodeEmailer发送的电子邮件,//html body }; transporter.sendMail(邮件选项,函数(错误,信息){ 如果(错误){ 返回console.log(错误); } console.log('发送的消息:'+信息响应); });
您需要返回承诺。只有这样,
onComplete()
才会等待承诺得到解决-邮件被触发

测试完成后调用的回调函数。onComplete可以
(可选)返回承诺,量角器将在之前等待该承诺
正在关闭webdriver。 此时,将完成测试,但全局对象仍然可用。
onComplete?:()=>void

成功触发电子邮件后,您需要转换函数以返回承诺。请参阅此。他们有一个非常好的示例,介绍如何将
fs.readFile()
转换为返回承诺

你可以这样做

onComplete: function() {
    return new Promise(function (fulfill, reject){
        var transporter = nodemailer.createTransport({
            host: 'smtp.gmail.com',
            port: 465,
            secure: true, // use SSL
            auth: {
                user: 'email',
                pass: 'password'
            }
        });
        var mailOptions = {
            from: '"TestMail" <>', // sender address (who sends)
            to: 'receiver's email', // list of receivers (who receives)
            subject: 'Hello through conf', // Subject line
            text: 'Hello world ', // plaintext body
            html: '<b>Hello world </b><br> This is the first email sent with Nodemailer in Node.js', // html body
    };
        transporter.sendMail(mailOptions, function(error, info){
            if(error){
                reject(err);
            }
            fulfill(info);
        });
    });
}
onComplete:function(){
返回新承诺(功能(履行、拒绝){
var transporter=nodeEmailer.createTransport({
主机:“smtp.gmail.com”,
港口:465,
安全:true,//使用SSL
认证:{
用户:“电子邮件”,
通行证:“密码”
}
});
var mailpoptions={
发件人:“'TestMail”“,//发件人地址(发送人)
收件人:'收件人的电子邮件',//收件人列表(收件人)
主题:“Hello through conf”,//主题行
text:'你好,世界',//纯文本正文
html:“Hello world
这是Node.js”中第一封使用nodeEmailer发送的电子邮件,//html body }; transporter.sendMail(邮件选项,函数(错误,信息){ 如果(错误){ 拒绝(错误); } 完成(信息); }); }); }
上面的代码不起作用,我按原样使用了代码,在执行后,电子邮件未被触发,浏览器保持打开状态,因此看起来promise未得到解决,控制台上未显示任何错误