Test decorators provides a set of decorators to run javascript unit tests with.
Please also refer to the Documentation.
Instead of writing describe
, define a class and decorate it with @suite
:
import { suite } from "test-decorators";
@suite
class TestSuite {
}
The decorator takes optional options as arguments, to provide a name or have describe.only
called
instead:
import { suite } from "test-decorators";
@suite("The name provided to describe")
class TestSuite {
}
@suite({
name: "The name provided to describe",
only: true
})
class TestSuite {
}
If no name is provided, the name of the class is used.
Instead of writing it
, define a class decorated with @suite
and provide methods decorated with @test
:
import { suite, test } from "test-decorators";
@suite
class TestSuite {
@test
private testSomething() {
...
}
}
The decorator takes optional options as arguments, to provide a name or have test.only
called
instead:
@test("test something")
private testSomething() {
...
}
@test({
name: "test something",
only: true
})
private testSomething() {
...
}
If no name is provided, the name of the method is used.
It is possible to parameterize the tests to have them called with different inputs:
@test({
name: "test something",
only: true,
params: [-1, 0, 1, 10, 1000, 2000]
})
private testSomething(input) {
...
}
The test will be executed once with every parameter specified.
The name can be generated from the parameters to increase readability:
@test({
name: ({ a, b, expected }) => `${a} + ${b} is ${expected}`,
only: true,
params: [
{ a: -1, b: 1, expected: 0 },
{ a: 0, b: 0, expected: 0 },
{ a: 100, b: 1, expected: 101 }
]
})
private testSomething({ a, b, expected }) {
expect(a + b).tobe(expected);
}
This library should work out of the box with jest and mocha compatible framework without any additional configuration needed. Otherwise it is possible to configure it and provide mocha-compatible functions:
import { configure } from "test-decorators"
configure({
it: () => { ... },
itOnly: () => { ... },
describe: () => { ... },
describeOnly: () => { ... },
});
Yarn is used instead of npm, so make sure it is installed, probably: npm install -g yarn
.
Install all dependencies using
yarn install
In order to build the code:
yarn build
yarn test
yarn lint
cd example
yarn test
Generated using TypeDoc