Mocha (JavaScript framework)
![]() | This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
File:Mocha.svg | |
Initial release | Error: df must be either "yes" or "y" (help) |
---|---|
Stable release | 2.3.4
/ 15 November 2015 |
Repository | |
Written in | JavaScript |
Type | Test automation framework |
License | MIT |
Website | mochajs |
Mocha is a JavaScript test framework running on node.js, featuring browser support, asynchronous testing, test coverage reports, and use of any assertion library.
Assertion Libraries
Mocha can be used with most JavaScript assertion libraries, including:
- should.js
- express.js
- chai
- better-assert
- unexpected
Usage and examples
$ npm install -g mocha
$ mkdir test
var assert = require("assert")
describe('Foo', function(){
describe('#getBar(value)', function(){
it('should return 100 when value is negative') // placeholder
it('should return 0 when value is positive', function(){
assert.equal(0, Foo.getBar(10));
})
})
})
$ mocha
.
1 test complete (1ms)
For asynchronous testing, invoke the callback, and Mocha will wait for completion.
describe('Foo', function(){
describe('#bar()', function(){
it('should work without error', function(done){
var foo = new Foo(128);
foo.bar(done);
})
})
})
Timeouts
Timeouts are used to introduce delays in the program. Since javascript is asynchronous, the timeouts help in situations where the program relies on the result of some operations that might not have completed processing yet. There are 2 types of timeouts:
Suite Level
Suite- level timeouts are applied to the entire test suite and all is inherited by all the nested-suites and test case provided they don’t explicitly override the timeout function.This call to the timeout function has to be made from within the suite. Syntax: this.timeout(<ms>) To disable the timeout call: this.timeout(0)
Test level
Test-level timeouts are applicable to individual test cases when called from within the particular test case. They, too, get disabled when this.timeout(0) is called.