@natlibfi/fixugen
v4.0.0
Published
Generate Node.js unit tests from fixtures and callbacks
Downloads
1,873
Readme
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.
