当前位置: 首页 > 知识库问答 >
问题:

nodejs上的邮件侦听器未断开连接

鲁烨熠
2023-03-14

我目前正在使用mail-listener5软件包来断言电子邮件地址收件箱中的电子邮件数量。

我的测试框架是nightwatchjs。

目前,我的命令脚本从电子邮件地址收件箱(标题为getInboxEmails)中获取电子邮件的数量;

var  {MailListener}  = require('mail-listener5');

exports.command = function() {
    this.perform(function(done) {
        var mailListener = new MailListener({
            username: '#########@outlook.com',
            password: '#########',
            host: 'imap-mail.outlook.com',
            port: 993,
            tls: true,
            connTimeout: 10000,
            authTimeout: 5000,
            tlsOptions: { rejectUnauthorized: false },
            mailbox: 'Inbox', 
            searchFilter: ['ALL'], 
            markSeen: true,
            fetchUnreadOnStart: false,
            attachments: false,
        });

        mailListener.start();

        mailListener.on('server:connected', function() {});

        mailListener.on('mailbox', function(mailbox) {
            var totalInboxMessages = (mailbox.messages.total);
            console.log('Total number of Inbox emails: ', totalInboxMessages);
        });

        //  mailListener.on('server:disconnected', function() {
        //  });

       //  mailListener.stop();
    done();
    });
};

我的nightwatchjs测试脚本如下所示;

module.exports = {
    'getting emails...': function (browser) {
        browser.getInboxEmails();
    },

    'bfs': function (browser) {
        browser.url('https://www.motorcyclenews.com/bikes-for-sale/****');
        
        *...assertions, etc*

    },

    'closing the browser': function (browser) {
       browser.browserEnd();
    },
};

当我运行这个nightwatchjs脚本时,输出以下内容;

但是,浏览器不会关闭。

我有点期待这一点,因为在我的getInboxEmails命令脚本包括;

            //  mailListener.on('server:disconnected', function() {
            //  });

            //  mailListener.stop();

然而,当我取消这两个命令的注释时,我没有看到显示的电子邮件数量(但是测试/浏览器正确地“关闭”)。

所以现在产量是,;

因此,当省略断开和停止时,电子邮件的数量似乎会正确显示,但测试不会停止。

当添加断开和停止时,不会显示电子邮件的数量,但测试会正确完成。

我想做的是列出电子邮件的数量,并让测试结束。

任何帮助都将不胜感激。

共有1个答案

樊琦
2023-03-14

你需要先启动你的邮件监听器所有部分

然后停止它

示例中的问题是,在init部分中已到达停止点,因此邮箱侦听器将永远不会被引发

    mailListener.on('mailbox', function(mailbox) {
            var totalInboxMessages = (mailbox.messages.total);
            console.log('Total number of Inbox emails: ', totalInboxMessages);
        });

只要做一些工作人员如下

let mailListener ;
jest.beforeAll(() => {
     mailListener = new MailListener({
            username: '#########@outlook.com',
            password: '#########',
            host: 'imap-mail.outlook.com',
            port: 993,
            tls: true,
            connTimeout: 10000,
            authTimeout: 5000,
            tlsOptions: { rejectUnauthorized: false },
            mailbox: 'Inbox', 
            searchFilter: ['ALL'], 
            markSeen: true,
            fetchUnreadOnStart: false,
            attachments: false,
        });

        mailListener.start();

        mailListener.on('server:connected', function() {});

        mailListener.on('mailbox', function(mailbox) {
            var totalInboxMessages = (mailbox.messages.total);
            console.log('Total number of Inbox emails: ', totalInboxMessages);
        });
});

最后在测试的最后部分

jest.afterAll(() => {
    mailListener.stop();
});

希望这有帮助

 类似资料:
  • MyAlertDialog在尝试将上下文设置为侦听器时抛出ClassCastException。我正在从片段调用MyAlertDailog。 我正在使用在android开发文档中找到的指南。 https://developer.android.com/guide/topics/ui/dialogs#PassingEvents 我的片段 MyAlertDialog 错误报告

  • 现在当我启动基于spring的应用程序时。我在调试器中看到,我的侦听器方法注册了,但是Spring不连接到ActiveMQ队列,我可以通过查看ActiveMQ web控制台轻松地看到这一点。此外,我没有看到任何来自spring的日志输出,而JMS的东西是这样做的。 我错过什么了吗?从这里走下去最好的路是什么?当然,我也测试了从ActiveMQ的web控制台中发送消息,但是如果没有客户端连接,就没有

  • 我的代码使用jQuery。我有一个密码输入框,我想要得到输入的密码任何时候。 下面是我的代码: 我确信这是一个正确的代码,因为当我在浏览器的控制台中输入它时,它可以工作,但当我重新加载页面时,它就不工作了 我能做什么?

  • 我收到以下错误消息 JAVAsql。SQLException:Listener拒绝了连接,出现以下错误:ORA-12505,TNS:Listener当前不知道连接描述符中给出的SID 原因:甲骨文。网纳什。NetException:侦听器拒绝连接,出现以下错误:ORA-12505,TNS:侦听器当前不知道连接描述符中给出的SID 请帮我这个...

  • 嗨,我有这个问题与我的代码每次我使一个对象在监听器类的监听器将不工作例如。 我在我的主类(CSmain.java)中有这个公共变量: 我在类中还有一个名为getSpawn()的方法,它返回spawn: 我已经在我的onEnable()中初始化了这个变量,但是当我试图从我的另一个类中获取它时,这个类(JoinListener.java)将无法工作。 我测试了它没有创建对象(CSmain main C

  • 我目前正在尝试编写一些JavaScript来获取已单击的类的属性。我知道要正确地执行此操作,我应该使用事件监听器。我的代码如下: 我希望每次点击其中一个类时都有一个警告框来告诉我该属性,但不幸的是,这并不起作用。有人能帮忙吗?