Testing

Mocha

> npm i mocha -g

> mocha

test folder

Chai

> npm i chai --save-dev

Assert

vs

Should

vs

Expect

Assert

var assert = require('chai').assert
  , foo = 'bar'
  , beverages = { tea: [ 'chai', 'matcha', 'oolong' ] };

assert.typeOf(foo, 'string'); // without optional message
assert.typeOf(foo, 'string', 'foo is a string'); // with optional message
assert.equal(foo, 'bar', 'foo equal `bar`');
assert.lengthOf(foo, 3, 'foo`s value has a length of 3');
assert.lengthOf(beverages.tea, 3, 'beverages has 3 types of tea');

Expect

var expect = require('chai').expect
  , foo = 'bar'
  , beverages = { tea: [ 'chai', 'matcha', 'oolong' ] };

expect(foo).to.be.a('string');
expect(foo).to.equal('bar');
expect(foo).to.have.lengthOf(3);
expect(beverages).to.have.property('tea').with.lengthOf(3);

Should

var should = require('chai').should() //actually call the function
  , foo = 'bar'
  , beverages = { tea: [ 'chai', 'matcha', 'oolong' ] };

foo.should.be.a('string');
foo.should.equal('bar');
foo.should.have.lengthOf(3);
beverages.should.have.property('tea').with.lengthOf(3);

Assert, Expect

interfaces do not modify Object.prototype

 

Should

interface modifies Object.prototype

The assert and expect interfaces support custom messages just about everywhere. For instance:

The message "foo should be true" will be output together with the failed assertion if the assertion fails. You don't get the opportunity to set a custom message with the should interface.

assert.isTrue(foo, "foo should be true");
expect(foo, "foo should be true").to.be.true;

Nock

> npm i nock -D

SUT

System Under Test

Dependency

(collaborator)

Dependency

(collaborator)

Dependency

(collaborator)

Under construction

Module

SUT

Istanbul

> npm i istanbul -g

> istanbul cover _mocha

> istanbul cover node_modules/mocha/bin/_mocha -- -R spec

Supertest

> npm i supertest

Made with Slides.com