mocha-classes
v0.1.2
Published
An experiment to allow writing Mocha unit tests with es2015 classes and es2016 decorators
Downloads
5
Readme
Mocha Classes
A simple proof of concept to explore using ES2015 Classes and ES2016 Decorators to help write more declarative unit tests with Mocha. Loosely insprired by the NUnit syntax.
Warning: Decorators are currently broken (as of 10/29/15) in Babel 6. Until that's addressed, you'll need to use Babel 5 if you plan to use decorators in your project.
Install
npm install --save-dev mocha-classes
Features
- Write tests using ES2015 Classes
- Supports inherited life-cycle hooks (
before
,beforeEach
, etc) from subclasses
Example Test
Note: A more thorough example can be seen in test/decorators-example.spec.js
import {expect} from 'chai';
import {bdd, runTest} from 'mocha-classes';
@bdd.describe('ES2015 Classes and ES2016 Decorators with Mocha')
class MyUnitTest {
@bdd.it('should pass')
sampleTestCase() {
expect(true).to.be.true;
}
}
runTest(new MyUnitTest());
Is this really a good idea?
Honestly, that's a great question. As of this time, I haven't identified much value that this decorator/class based test syntax provides. Only time will tell...
Possible Benefits
- Less nesting, due to description of test not being a param to
describe
. - Encourages more descriptive function names for life-cycle hooks like
before
andafter
(real world Mocha tests frequently use anon functions to avoid line length limits in projects), which leads to more descriptive stack traces.
Possible Future Enhancements
- Make argument to
describe
andit
decorators optional, and infer test name from fn name when not provided (similar to NUnit)