Global settings
Share settings cross runners.
Per test settings
By default, the runners take an optional argument for extra settings. Some of these settings can be re-used over-and-over in the same file and across several files.
Example:
test('test #1', () => {
fc.assert(myProp1, { numRuns: 10 });
});
test('test #2', () => {
fc.assert(myProp2, { numRuns: 10 });
});
test('test #3', () => {
fc.assert(myProp3, { numRuns: 10 });
});
Shared settings
The recommended way to share settings across runners is to use configureGlobal
.
Here is how to update the snippet above to share the settings:
fc.configureGlobal({ numRuns: 10 });
test('test #1', () => {
fc.assert(myProp1);
});
test('test #2', () => {
fc.assert(myProp2);
});
test('test #3', () => {
fc.assert(myProp3);
});
configureGlobal
fully resets the settings. In other words, it fully drops the previously defined global settings if any even if they applied on other keys.
If you want to only add new options on top of the existing ones you may want to use readConfigureGlobal
as follow:
fc.configureGlobal({ ...fc.readConfigureGlobal(), ...myNewOptions });
You can also fully reset all the global options by calling resetConfigureGlobal
.
Resources: API reference.
Available since 1.18.0.
Integration with test frameworks
Main test frameworks provide ways to connect configureGlobal
on all the spec files without having to copy the snippet over-and-over. This section describes how to do so with some of them.
Jest
You need to define a setup file (if not already done):
module.exports = {
setupFiles: ['./jest.setup.js'],
};
Then you can add the global settings snippet directly into the setup file:
const fc = require('fast-check');
fc.configureGlobal({ numRuns: 10 });
Mocha
When calling mocha, you can provide an additional parameter to specify a file to be executed before the code of your tests by adding --file=mocha.setup.js
.
Then you can add the global settings snippet directly into the setup file:
const fc = require('fast-check');
fc.configureGlobal({ numRuns: 10 });
Vitest
You need to define a setup file (if not already done):
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
// ...
setupFiles: ['./vitest.setup.js'],
},
});
Then you can add the global settings snippet directly into the setup file:
import fc from 'fast-check';
fc.configureGlobal({ numRuns: 10 });