TypeUnit enables you to write TypeScript tests in the style of xUnit.
It's a simple library that sprinkles syntactic sugar atop your test framework of choice.
TypeUnit works by way of plugins, which provide the functionality for actually running the test suite. An example is type-unit-mocha
: https://github.com/aroberts-illumina/type-unit-mocha.
See examples of how to use TypeUnit at: https://github.com/aroberts-illumina/type-unit-demos
Version 1.0.0:
- Version 1.0.0 introduces a plugin system, and the first plugin is
type-unit-mocha
. Consequently,type-unit
itself is no longer reliant on mocha. - The
suite
,fact
, andtheory
decorator names are now lowercase by default (of course, you can alias them upon import if needed:import {fact as Fact} from "type-unit"
). - Updated example to use preferred ES6-style import syntax.
- Clone this repository.
- Run
npm i
. - Run
npm run build
. - To execute the tests, install mocha globally (
npm i -g mocha
), then runnpm run test
.
- In your test project, install a TypeUnit plugin (
npm i type-unit-mocha --save
). - Create a typeunit.config.js file:
var mochawrapper = require("type-unit-mocha");
module.exports = {
plugin: mochawrapper
};
- Configure your TypeScript project to allow decorators. As of TypeScript 1.5.*, you must set the
experimentalDecorators
compiler option totrue
. - A class comprises a
@suite
of tests, and an individual test function is a@fact
. A test to run with a series of different parameters is a@theory
. - How you execute your test runner will depend on the plugin used. In the case of
type-unit-mocha
, ensure thatmocha
is installed globally (npm i -g mocha
), then runmocha
from the same directory as thetypeunit.config.js
file.
import {fact, theory, suite} from "type-unit";
import * as assert from "assert";
@suite("Arithmetic")
class MathTests {
@fact("Should be able to add")
addition() {
assert.equal(1 + 1, 2);
}
@theory([
[2, 1, 2],
[2, 2, 4],
[2, 3, 8]
], "Should be able to exponentiate")
exponentiation(base: number, exponent: number, expectedValue: number) {
assert.equal(Math.pow(base, exponent), expectedValue);
}
}
The following features are on the roadmap
- Support for decorators that correspond to mocha's
beforeEach()
andafterEach()
and to xUnit Fixtures. - Support for alternative test frameworks like jasmine-node or vows.
- Contributions welcome. New features should be tested by adding unit tests file (
tests
folder). Tests can be executed by runningmocha
from the root TypeUnit directory, ornpm run test
.