Socket
Socket
Sign inDemoInstall

mocha

Package Overview
Dependencies
82
Maintainers
4
Versions
195
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    mocha

simple, flexible, fun test framework


Version published
Weekly downloads
7.2M
decreased by-5.08%
Maintainers
4
Created
Weekly downloads
 

Package description

What is mocha?

Mocha is a feature-rich JavaScript test framework running on Node.js and in the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases.

What are mocha's main functionalities?

Test Organization

Organize tests in suites and sub-suites using describe() and context(), and specify test cases using it().

"use strict";\nconst assert = require('assert');\ndescribe('Array', function() {\n  describe('#indexOf()', function() {\n    it('should return -1 when the value is not present', function() {\n      assert.equal([1, 2, 3].indexOf(4), -1);\n    });\n  });\n});

Asynchronous Testing

Support for testing asynchronous code with ease, using callbacks, promises, or async/await.

"use strict";\nconst assert = require('assert');\ndescribe('User', function() {\n  describe('#save()', function() {\n    it('should save without error', function(done) {\n      const user = new User('Luna');\n      user.save(function(err) {\n        if (err) done(err);\n        else done();\n      });\n    });\n  });\n});

Hooks

Lifecycle hooks such as before(), after(), beforeEach(), and afterEach() for setting up preconditions and clean-up after tests.

"use strict";\ndescribe('Connection', function() {\n  before(function() {\n    // runs once before the first test in this block\n  });\n\n  after(function() {\n    // runs once after the last test in this block\n  });\n\n  beforeEach(function() {\n    // runs before each test in this block\n  });\n\n  afterEach(function() {\n    // runs after each test in this block\n  });\n\n  // test cases\n});

Other packages similar to mocha

Changelog

Source

8.2.0 / 2020-10-16

The major feature added in v8.2.0 is addition of support for global fixtures.

While Mocha has always had the ability to run setup and teardown via a hook (e.g., a before() at the top level of a test file) when running tests in serial, Mocha v8.0.0 added support for parallel runs. Parallel runs are incompatible with this strategy; e.g., a top-level before() would only run for the file in which it was defined.

With global fixtures, Mocha can now perform user-defined setup and teardown regardless of mode, and these fixtures are guaranteed to run once and only once. This holds for parallel mode, serial mode, and even "watch" mode (the teardown will run once you hit Ctrl-C, just before Mocha finally exits). Tasks such as starting and stopping servers are well-suited to global fixtures, but not sharing resources--global fixtures do not share context with your test files (but they do share context with each other).

Here's a short example of usage:

// fixtures.js

// can be async or not
exports.mochaGlobalSetup = async function () {
  this.server = await startSomeServer({port: process.env.TEST_PORT});
  console.log(`server running on port ${this.server.port}`);
};

exports.mochaGlobalTeardown = async function () {
  // the context (`this`) is shared, but not with the test files
  await this.server.stop();
  console.log(`server on port ${this.server.port} stopped`);
};

// this file can contain root hook plugins as well!
// exports.mochaHooks = { ... }

Fixtures are loaded with --require, e.g., mocha --require fixtures.js.

For detailed information, please see the documentation and this handy-dandy flowchart to help understand the differences between hooks, root hook plugins, and global fixtures (and when you should use each).

:tada: Enhancements

For implementors of custom reporters:

  • #4409: Parallel mode and custom reporter improvements (@boneskull):
    • Support custom worker-process-only reporters (Runner.prototype.workerReporter()); reporters should subclass ParallelBufferedReporter in mocha/lib/nodejs/reporters/parallel-buffered
    • Allow opt-in of object reference matching for "sufficiently advanced" custom reporters (Runner.prototype.linkPartialObjects()); use if strict object equality is needed when consuming Runner event data
    • Enable detection of parallel mode (Runner.prototype.isParallelMode())

:bug: Fixes

  • #4476: Workaround for profoundly bizarre issue affecting npm v6.x causing some of Mocha's deps to be installed when mocha is present in a package's devDependencies and npm install --production is run the package's working copy (@boneskull)
  • #4465: Worker processes guaranteed (as opposed to "very likely") to exit before Mocha does; fixes a problem when using nyc with Mocha in parallel mode (@boneskull)
  • #4419: Restore lookupFiles() in mocha/lib/utils, which was broken/missing in Mocha v8.1.0; it now prints a deprecation warning (use const {lookupFiles} = require('mocha/lib/cli') instead) (@boneskull)

Thanks to @AviVahl, @donghoon-song, @ValeriaVG, @znarf, @sujin-park, and @majecty for other helpful contributions!

Readme

Source

Mocha test framework

☕️ Simple, flexible, fun JavaScript test framework for Node.js & The Browser ☕️

Build Status Coverage Status FOSSA Status Gitter OpenCollective OpenCollective

NPM Version Node Version


Mocha Browser Support h/t SauceLabs

Backers

Become a backer and show your support to our open source project.

MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer MochaJS Backer

Sponsors

Does your company use Mocha? Ask your manager or marketing team if your company would be interested in supporting our project. Support will allow the maintainers to dedicate more time for maintenance and new features for everyone. Also, your company's logo will show on GitHub and on our site - who doesn't want a little extra exposure? Here's the info.

MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor MochaJS Sponsor

Development

You might want to know that:

  • Mocha is the most-depended-upon module on npm (source: libraries.io), and
  • Mocha is an independent open-source project, maintained exclusively by volunteers.

You might want to help:

Finally, come chat with the maintainers on Gitter if you want to help with:

  • Triaging issues, answering questions
  • Review, merging, and closing pull requests
  • Other project-maintenance-y things

License

Copyright 2011-2020 OpenJS Foundation and contributors. Licensed MIT.

FOSSA Status

Keywords

FAQs

Last updated on 16 Oct 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc