Licence
MIT
Version
4.0.0
Deps
1
Size
37 kB
Vulns
0
Weekly
0
Generate Node.js unit tests from fixtures and callbacks
Provides test callbacks with Fixura's functions to fetch test fixtures.
Usage
The test fixture directory is parsed as follows: Each subdirectory becomes a unit test group (node:test's describe) and inner subdirectories each represent individual tests (node:test's it). For custom test variables see metadata example.
import generateTests from '@natlibfi/fixugen';
import {dirname} from 'node:path';
import {fileURLToPath} from 'node:url';
const __dirname = dirname(fileURLToPath(import.meta.url));
generateTests({
callback,
path: [__dirname, '..', 'test-fixtures']
});
function callback({getFixture, custom}) {
const expectedValue = getFixture('value.txt');
const value = generateSomething(custom);
expect(value).to.equal(expectedValue);
}
Options
- callback: A callback function passed to node:test's
it. Receives Fixura's function as arguments.- dirName: callback gets dirName variable that is one folder up
- path: An array of path components which make up a path to the test fixtures directory
- recurse: Whether to recurse into the subdirectories of path. If
falsethe last directory of the path is used as the name of the node:test's describe-call and it's direct subdirectories are used as unit test directories. Defaults to true - fixura: Options that are passed to Fixura.
- useMetadataFile: If set to true, reads and parses a file named
metadata.jsonin each unit test directory. The content must be a JSON object and it's properties as passed to the unit test callback function.- If a property
descriptionis present, it is used as the test's description (Defaults to false and folder name is used). - If a property
skipis present, it decides if test is skipped (Defaults to false). - If a property
onlyis present, it decides if this/these tests are only run (Defaults to false).
- If a property
- hooks: An object which maps the following properties to node:test's corresponding callbacks: after, before, afterEach, beforeEach
Example metadata.json
{
"description": "Example description of test",
"skip": false,
"only": false,
"custom": "Custom variable delivered for test"
}
License and copyright
Copyright (c) 2020, 2023-2026 University Of Helsinki (The National Library Of Finland)
This project's source code is licensed under the terms of MIT or any later version.