Writing great ES6 style Promises for Node.js is only half the battle. Your great modules must include tests as well to ensure future iterations don't break them. In this lesson, I show you a simple ES6 Promise in Node.js, then walk you through creating tests in Mocha using chai and chai-as-promised to test both resolve and reject methods.
Install:
npm i -g mocha npm i -D chai chai-as-promised
Index.js
exports.foo = (opts) => { return new Promise( (resolve, reject) => { if(opts === 1) { reject('Found an error'); } else { setTimeout( () => { console.log(opts); resolve(opts); }, 500); } } ); }; exports.foo(2) .catch(err => { console.log(err); });
test/index.js:
const chai = require('chai'); const expect = chai.expect; const chaiAsPromised = require('chai-as-promised'); const index = require('../index.js'); chai.use(chaiAsPromised); describe('Function foo', () => { it('should accpet anything but one', () => { const promise = index.foo(0); return expect(promise).to.eventually.equal(0); }); it('should throw error is apply one', () => { const promise = index.foo(1); // return expect(promise).to.be.rejected; return expect(promise).to.be.rejectedWith('Found an error'); }) });