test-decorators
TypeScript icon, indicating that this package has built-in type declarations

0.3.1 • Public • Published

Test Decorators

npm Build Status Coverage Status

Test decorators provides a set of decorators to run javascript unit tests with.

Please also refer to the Documentation.

Table of contents

Suites

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.

Tests

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.

Parameterizing

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);
}

Configuration

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: () => { ... },
});

Contributing

Yarn is used instead of npm, so make sure it is installed, probably: npm install -g yarn.

Install all dependencies using

yarn install

Building

In order to build the code:

yarn build

Running the tests with coverage

yarn test

Linting

yarn lint

Starting the example

cd example
yarn test

Contributors

  • Frederick Gnodtke
  • Sergej Kasper

Readme

Keywords

none

Package Sidebar

Install

npm i test-decorators

Weekly Downloads

34

Version

0.3.1

License

MIT

Unpacked Size

233 kB

Total Files

70

Last publish

Collaborators

  • sergejkasper
  • prior99