нодмаилер не отправляет тест мокко - PullRequest
0 голосов
/ 02 декабря 2019

Я объявил это в маршрутах:

router.get('/test',userController.test);

Функция в userController объявлена ​​так:

exports.test = function (req, res) {
    var transport = nodemailer.createTransport({
        service: 'gmail',
        auth: {
            user: myuser,
            pass: mypass
        }
    });

    const message = {
        from: 'me@gmail.com',
        to: 'other@gmail.com',
        subject: 'Subject here',
        text: 'Text here',
        html: '<html><body><div>html here</div></body></html>'
    };
    console.log("message:",message);
    transport.sendMail(message, function(err, info) {
        if (err) {
            console.log(err)
        } else {
            console.log(info);
        }
    });

    res.status(200).json({
        test: 'test'
    });
};

Теперь, когда я запускаю приложение с

node app.js

затем я получаю письмо в свой почтовый ящик.
Кроме того, на консоли выводится «информация»:

message: {
from: 'me@gmail.com',
to: 'other@gmail.com',
subject: 'Subject',
text: 'text here',
html: '<html><body><div>hmtl here</div></body></html>'
}   
{
  accepted: [ 'other@gmail.com' ],
  rejected: [],
  envelopeTime: 174,
  messageTime: 374,
  messageSize: 675,
  response: '250 2.0.0 OK  1575235049 y6sm13785566ljm.95 - gsmtp',
  envelope: {
    from: 'me@gmail.com',
    to: [ 'other@gmail.com' ]
  },
  messageId: '<somehash@gmail.com>'

Так что это выглядит хорошо. Однако, когда я запускаю это через mocha, никакая почта не приходит во входящие. И никакая информация не печатается в консоли. Как видите, если произошла ошибка, ее следует распечатать. Но это также не напечатано. Но при запуске теста я вижу в консоли результат

console.log("message:",message);

Но письмо все равно не отправляется. Похоже, что sendMail-функция никогда не достигается / не выполняется.

В чем может быть проблема?
Тестовый модуль просто вызывает конечную точку теста (здесь есть другие конечные точки, и все онивыполнено):

//This test is green
it("Succedes when test", done => {
chai
  .request(app)
  .get("/users/test")
  .end((err, res) => {
    expect(res).to.have.status(200);
    done();
  });
});

1 Ответ

1 голос
/ 02 декабря 2019

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

В вашем случае вы, похоже, не проверяете параметр .end callbacks err на наличие ошибок. Попробуйте сначала проверить err на несуществование.

expect(err).to.not.exist
...