#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();
});
желаю этой помощи