javascript testing: mocha + chai
Post on 07-May-2015
3.580 Views
Preview:
DESCRIPTION
TRANSCRIPT
JavaScript TestingWith Mocha and Chai
JavaScript Test Frameworks
• QUnit
• Mocha
• YUI Test
• Jasmine
• JSUnit
• Suitest
• Sinon.js
• DOH
• Enhance JS
• RhUnit
• CrosscheckJ3Unit JSNUnitJSSpec UnitTestingJSpec
screw-unit
Test.SimpleRhinoUnitBuster.JS
Choosing a framework
• Client side?
• Server side?
• Well maintained?
• Well documented?
• Integration with CI
Mocha
Mocha
• Feature Rich
• Runs on node + the browser
• Simplifies async testing
• Growl notifications
• Choose your own assertion library
Chai
• BBD / TDD
• For node + the browser
• Three assertion styles
• should - foo.should.be.a(‘string’)
• expect - expect(foo).to.be.a(‘string’)
• assert - assert.typeOf(foo, ‘string’)
Getting started
• Requires node
• Requires npm
• npm install -g mocha
• npm install -g chai
Setup
• Expects tests to be in <project_root>/test
• Allows of per project options file:
• mocha.opts
• To run test:
• mocha
First test
describe('Array', function(){ describe('#indexOf()', function(){ it('should return -1 when the value is not present', function(){ [1,2,3].indexOf(5).should.equal(-1); [1,2,3].indexOf(0).should.equal(-1); }) })})
Hooks
• before()
• after()
• beforeEach()
• afterEach()
Modifying Test Cases
• Pending tests - no callback
• Exclusive tests - append .only
• Inclusive tests - append .skip
Other features
• mocha --reports
• mocha --watch
• mocha --growl
• mocha --compilers
• Interface support for: TDD, BDD + QUnit
CoffeeScript
• mocha --compilers coffee:coffee-script
describe 'Task instance', -> task1 = task2 = null
it 'should have a name', -> task1 = new Task 'feed the cat' task1.name.should.equal 'feed the cat'
Fin
top related