Прослушиватель почты на nodejs не отключается

#javascript #node.js #email #nightwatch.js

#javascript #node.js #Адрес электронной почты #nightwatch.js

Вопрос:

В настоящее время я использую пакет 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:

Вам нужно инициализировать ваш прослушиватель почты в части beforeAll

и остановите это в конце концов

проблема в вашем примере в том, что ваша остановка достигнута в части инициализации, поэтому прослушиватель вашего почтового ящика никогда не будет вызван

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

желаю этой помощи