2017-12-07 12 views
1

のスタブnodemailer輸送私がテストしたいと思います:ノード - 私は機能を持っているテスト

var mailServerOptions = {....}; 

var transporter = nodemailer.createTransport(mailServerOptions); 

exports.sendTemplateEmail = (to, template, data) => { 
    var mailOptions = {....} 

    return new Promise((resolve, reject) => { 
     transporter.sendMail(mailOptions, (err, result) => { 
      if (err) { 
       return reject(err) 
      } 

      return resolve(result); 
     }); 
    }); 
} 

私はこのような状況でtransporter.sendMailスタブできますか?私はこれを見つけましたpostしかし、それは私がしようとしているものには本当に適合しません。

送信部分を自分自身の機能に移動することができます。実際には必要な場合はスタブすることができますが、その経路に行かなくてもいいと思うでしょう。

答えて

0

この例では、私

======== ======== myfile.js

// SOME CODE HERE 

transporter.sendMail(mailOptions, (err, info) => { 
    // PROCESS RESULT HERE 
}); 

======== myfileのため正常に動作します。 spec.js(ユニットテストファイル)========

const sinon = require('sinon'); 
const nodemailer = require('nodemailer'); 
const sandbox = sinon.sandbox.create(); 

descript('XXX',() => { 
    it('XXX', done => { 
    const transport = { 
     sendMail: (data, callback) => { 
     const err = new Error('some error'); 
     callback(err, null); 
     } 
    }; 
    sandbox.stub(nodemailer, 'createTransport').returns(transport); 

    // CALL FUNCTION TO TEST 

    // EXPECT RESULT 
    }); 
}); 
関連する問題