Mocha runs independently from the [assertion library](http://visionmedia.github.io/mocha/#assertions), so you can choose which assertion format works best for you. Mocha most often is run in combination with assertion library [Chai](http://chaijs.com).
Ranked in these QuestionsQuestion Ranking
Pro Write tests with Behavior Driven Development (BDD)
Allows developers to choose their development process. Not only TDD but also BDD.
Pro Makes Asynchronous testing extremely easy
No need to write tricky statements for Async testing. Mocha gives you a
done callback. Place this
done parameter in your callback function, that'll let Mocha know that you've written an asynchronous function.
Pro Integrates really well with NodeJS
The Mocha test framework itself runs on NodeJS, hence it makes everything related to it extremely simple. With Mocha's simple syntax and speed, testing your node.js app just got a whole lot easier.
Pro Runs in Node.js and the browser
Mocha has a browser build as well as a node command line program so you can test in client and server side environments.
Pro Custom full color test reporters
Mocha has multiple test reporters built in and you can create your own as well. The test reporters have full color and makes it easy to see if your tests fail or not.
Pro Easy to add support for Generators
Aside from the numerous benefits with generators in your application, You can now also integrate generators into your test suite. By using mocha, all you have to do is enable support for generators.
Pro Well documented
Pro Easy to use
One of Jest's philosophies is to provide an integrated “zero-configuration” experience.
Eg: it provides assertion library by default.
Pro Recommended for React testing
Jest is the recommended unit testing framework by Facebook. It's also the one used by Facebook developers when working with React projects.
Pro Snapshot testing is convinient
It's great for testing UI.
It is also convenient for asserting complex data objects, as it doesn't require developers to manually compose the expected value.
Con No atomic tests
Tests cannot be ran in random order.
Con Can be intimidating for beginners
While some testing frameworks are complete out of the box, Mocha requires developers to select and set up assertion libraries and mocking utilities. For someone who is just starting to learn how to build tests this can be scary as they will also have to choose which libraries to use and learn them too.
Con Not beginner-friendly
If you're new to unit testing and are trying to understand unit testing within the React ecosystem, specifically ReactNative, it is going to be a challenge. The Jest doc dives right into making tests without any primer on how to go from concept to implementation.