Socket
Socket
Sign inDemoInstall

nodemailer-mock

Package Overview
Dependencies
Maintainers
1
Versions
61
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nodemailer-mock

Mock nodemailer module for testing


Version published
Weekly downloads
16K
decreased by-5.32%
Maintainers
1
Weekly downloads
 
Created
Source

nodemailer-mock

nodemailer-mock Build Status Code Coverage Code Climate Issue Count Dependency Status Dev Dependency Status Downloads

Mocked nodemailer module for unit testing.

install

npm install nodemailer-mock --save-dev

mock api

There are some special methods available on the mocked module to help with testing.

  • nodemailerMock.mock.reset()
    • resets the mock class to default values
  • nodemailerMock.mock.sentMail()
    • returns an array of sent emails
  • nodemailerMock.mock.shouldFailOnce()
    • will return an error on the next call to transport.sendMail()
  • nodemailerMock.mock.shouldFail(true|false)
    • indicate if errors should be returned for subsequent calls to transport.sendMail()
      • if true, return error
      • if false, return success
  • nodemailerMock.mock.mockedVerify(true|false)
    • determine if a call to transport.verify() should be mocked or passed through to nodemailer
      • if true, use a mocked callback
      • if false, pass through to a real nodemailer transport
  • nodemailerMock.mock.successResponse(success)
    • set the success message that is returned in the callback for transport.sendMail()
  • nodemailerMock.mock.failResponse(err)
    • set the err that is returned in the callback for transport.sendMail()

usage

The mocked module behaves in a similar fashion to other transports provided by nodemailer.

'use strict'

const nodemailerMock = require('nodemailer-mock')
const transport = nodemailerMock.createTransport()

// send an email
const email = //... the email you want to send
transport.sendMail(email, function(err, info){
  if (err){
    console.log('Error!', err, info)
  } else {
    console.log('Success!', info)
  }
}

// verify a transport
transport.verify(function(err, success){
  if (err){
    console.log('Error!', err)
  } else {
    console.log('Success!', success)
  }
})

example using mocha and mockery

Here is an example of using a mocked nodemailer class in a mocha test using mockery

'use strict'

const should = require('should')
const mockery = require('mockery')
const nodemailerMock = require('nodemailer-mock')

describe('Tests that send email', function(){

  // This could be an app, Express, etc. It should be instantiated *after* nodemailer is mocked.
  let app = null

  before(function(){

    // Enable mockery to mock objects
    mockery.enable({
      warnOnUnregistered: false
    })
    
    // Once mocked, any code that calls require('nodemailer') will get our nodemailerMock
    mockery.registerMock('nodemailer', nodemailerMock)
    
    // Make sure anything that uses nodemailer is loaded here, after it is mocked...

  })
  
  afterEach(function(){

    // Reset the mock back to the defaults after each test
    nodemailerMock.mock.reset()

  })
  
  after(function(){

    // Remove our mocked nodemailer and disable mockery
    mockery.deregisterAll()
    mockery.disable()

  })
  
  it('should send an email using nodemailer-mock', function(done){

    // call a service that uses nodemailer
    var response = ... // <-- your code here
    
    // a fake test for something on our response
    response.value.should.be.exactly('value')
    
    // get the array of emails we sent
    const sentMail = nodemailerMock.mock.sentMail()
    
    // we should have sent one email
    sentMail.length.should.be.exactly(1)
    
    // check the email for something
    sentMail[0].property.should.be.exactly('foobar')
    
    done()

  })
  
  it('should fail to send an email using nodemailer-mock', function(done){

    // tell the mock class to return an error
    const err = 'My custom error'
    nodemailerMock.mock.shouldFailOnce()
    nodemailerMock.mock.failResponse(err)
  
    // call a service that uses nodemailer
    var response = ... // <-- your code here
    
    // a fake test for something on our response
    response.error.should.be.exactly(err)
    
    done()
    
  })
  
  it('should verify using the real nodemailer transport', function(done){

    // tell the mock class to pass verify requests to nodemailer
    nodemailerMock.mock.mockedVerify(false)
  
    // call a service that uses nodemailer
    var response = ... // <-- your code here
    
    /* calls to transport.verify() will be passed through, 
       transport.sendMail() is still mocked */
    
    done()
    
  })

})

Keywords

FAQs

Package last updated on 22 Sep 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc