Tag function for Parameterized testing with Markdown table.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
test
.gitignore
.travis.yml
LICENSE
README.md
package.json
tsconfig.json

README.md

parameterized-table-template Build Status

This library provide Tag functions for Parameterized testing with Markdown-like table.

This is inspired by jest-each.

Install

Install with npm:

npm install parameterized-table-template

Usage

import * as assert from "assert";
import { parameterizedTableTag } from "parameterized-table-template";

describe("example", () => {
    describe("sum tests", () => {
        // function for testing
        const sum = (x, y) => x + y;
        // generate tests
        parameterizedTableTag`
            first | second | expected
            ${1}  | ${2}   | ${3}
            ${2}  | ${1}   | ${3}
            ${2}  | ${2}   | ${4}
        `.forEach(({ first, second, expected }) => {
            it(`${first} + ${second} = ${expected}`, () => {
                assert.strictEqual(sum(first, second), expected);
            });
        });
    });
});

Notes: For TypeScript User

// parameterizedTableTag allow to pass generics type
parameterizedTableTag<{ first: number, second: number, expected: number }>`
    first | second | expected
    ${1}  | ${2}   | ${3}
    ${2}  | ${1}   | ${3}
    ${2}  | ${2}   | ${4}
`.forEach(({ first, second, expected }) => {
    it(`${first} + ${second} = ${expected}`, () => {
        assert.strictEqual(sum(first, second), expected);
    });
});

API

parameterizedTableTag: object[]

parameterizedTableTag is a Tag functions.

It return array of object that is defined in table.

parameterizedTableTag takes a tagged template string with:

  • First row of variable name column headings separated with |
  • One or more subsequent rows of data supplied as template literal expressions using ${value} syntax.
const table = parameterizedTableTag`
    first | second | expected
    ${1}  | ${2}   | ${3}
    ${2}  | ${1}   | ${3}
    ${2}  | ${2}   | ${4}
`;
/*
[
    {
        "expected": 3,
        "first": 1,
        "second": 2
    },
    {
        "expected": 3,
        "first": 2,
        "second": 1
    },
    {
        "expected": 4,
        "first": 2,
        "second": 2
    }
]
*/

Changelog

See Releases page.

Running tests

Install devDependencies and Run npm test:

npm i -d && npm test

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

MIT © azu

Acknowledge

It is based on jest-each.