Jump to content

Mocha (JavaScript framework)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Sshaikh2 (talk | contribs) at 21:18, 5 February 2016. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Mocha
Initial releaseError: df must be either "yes" or "y" (help)
Stable release
2.3.4 / 15 November 2015; 9 years ago (2015-11-15)
Repository
Written inJavaScript
TypeTest automation framework
LicenseMIT
Websitemochajs.org

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.


See also

References