У меня есть функция почтовой программы, которую я создал и пытаюсь укрепить покрытие. Попытка проверить его части оказались сложнее, особенно это mailer.smtpTransport.sendMailСмыкая функцию электронной почты в nodejs
var nodemailer = require('nodemailer')
var mailer = {}
mailer.smtpTransport = nodemailer.createTransport('SMTP', {
'service': 'Gmail',
'auth': {
'XOAuth2': {
'user': '[email protected]',
'clientId': 'googleClientID',
'clientSecret': 'superSekrit',
'refreshToken': '1/refreshYoSelf'
}
}
})
var mailOptions = {
from: 'Some Admin <[email protected]>',
}
mailer.verify = function(email, hash) {
var emailhtml = 'Welcome to TestCo. <a href="'+hash+'">Click this '+hash+'</a>'
var emailtxt = 'Welcome to TestCo. This is your hash: '+hash
mailOptions.to = email
mailOptions.subject = 'Welcome to TestCo!'
mailOptions.html = emailhtml
mailOptions.text = emailtxt
mailer.smtpTransport.sendMail(mailOptions, function(error, response){
if(error) {
console.log(error)
} else {
console.log('Message sent: '+response.message)
}
})
}
Я уверен в том, как идти о тестировании, в частности, обеспечение того, чтобы моя функция mailer.smtpTransport.sendMail проходит правильные параметры без отправки электронной почты. Я пытаюсь использовать https://github.com/whatser/mock-nodemailer/tree/master, но я, вероятно, ошибаюсь. Должен ли я издеваться над методом?
var _ = require('lodash')
var should = require('should')
var nodemailer = require('nodemailer')
var mockMailer = require('./helpers/mock-nodemailer')
var transport = nodemailer.createTransport('SMTP', '')
var mailer = require('../../../server/lib/account/mailer')
describe('Mailer', function() {
describe('.verify()', function() {
it('sends a verify email with a hashto an address when invoked', function(done) {
var email ={
'to': '[email protected]',
'html': 'Welcome to Testco. <a href="bleh">Click this bleh</a>',
'text': 'Welcome to Testco. This is your hash: bleh',
'subject': 'Welcome to Testco!'
}
mockMailer.expectEmail(function(sentEmail) {
return _.isEqual(email, sentEmail)
}, done)
mailer.verify('[email protected]','bleh')
transport.sendMail(email, function() {})
})
})
В чем смысл этого теста? Как бы то ни было, это просто проверяет библиотеку nodemailer, которая уже тестируется в наборе тестов nodemailer. Почему бы не настроить фиктивный SMTP-сервер и проверить тестовые возможности? – Michael