我想在cypress测试中使用imap nodejs库来获取电子邮件。一切正常,如果电子邮件被发现。但是,如果没有找到邮件,它会抛出异常。我想尝试给予一些时间,而电子邮件收到,所以想重试取50-100次。你知道怎么做吗?
这是我的imap代码在cypress配置文件
const myTask = {
...
imap.once('ready', function() {
openInbox(function (err, box) {
if (err) throw err;
imap.search(filter, function (err, results) {
if (err) throw err;
var f = imap.fetch(results, { bodies: '1', markSeen: true });
f.on('message', function (msg, seqno) {
console.log('Message #%d' + seqno);
console.log('Message type' + msg.text)
var prefix = '(#' + seqno + ') ';
msg.on('body', function (stream, info) {
var buffer = '', count = 0;
stream.on('data', function (chunk) {
buffer += chunk.toString('utf8');
console.log("BUFFER" + buffer)
})
stream.once('end', function () {
if (info.which === '1') {
console.log("BUFFER" + buffer)
}
});
console.log(prefix + 'Body');
stream.pipe(fs.createWriteStream('msg-' + seqno + '-body.txt'));
});
msg.once('attributes', function (attrs) {
console.log(prefix + 'Attributes: %s', inspect(attrs, false, 8));
});
msg.once('end', function () {
console.log(prefix + 'Finished');
});
});
f.once('error', function (err) {
console.log('Fetch error: ' + err);
});
f.once('end', function () {
console.log('Done fetching all messages!');
imap.end();
});
});
});
});
- 你好
从命令文件中调用这个函数
Cypress.Commands.add('fechEmail', () => {
return cy.task('fetchEmail', ['UNSEEN', ['SUBJECT', 'stone']]).then(res => {
return res
})
})
1条答案
按热度按时间5f0d552i1#
它在测试中抛出错误,因为在任务
if (err) throw err;
中。任务中抛出的任何错误都会使调用该任务的测试失败,因此如果您想稍后再试,请不要在那里抛出错误。而不是使用
if (err) return null;
然后在测试中,处理空值以重试,类似于