0.1.3 • Published 5 years ago

@bigteam/mocha-classes v0.1.3

Weekly downloads
-
License
MIT
Repository
github
Last release
5 years ago

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 currently aren't supported in Babel 6, due to recent changes in the proposal. 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 and after (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

  1. Make argument to describe and it decorators optional, and infer test name from fn name when not provided (similar to NUnit)