jest-mock-random
Math.random()
as deterministic Jest mock function.
Install
~ npm install --save-dev jest-mock-random
// or
~ yarn add --dev jest-mock-random
Usage
jest-mock-random can be used as an additional beforeEach for your sequence of test.
import { mockRandomForEach } from 'jest-mock-random';
describe('Test with random usage', () => {
mockRandomForEach([0.1, 0.2, 0.3, 0.6]);
it('assigns random the values that we want to mock in order', () => {
const actual = [Math.random(), Math.random(), Math.random(), Math.random()];
expect(actual).toEqual([0.1, 0.2, 0.3, 0.6]);
});
});
mockRandomWith accept a single value that it will give back every time Math.random is called or an array of values that the mock will use as a circular array.
The values could be or a decimal number or a string that represents a decimal.
In the same way the mock can be use for individual test:
import { mockRandom, resetMockRandom } from 'jest-mock-random';
describe('Test with random usage', () => {
it('assigns random the values that we want to mock in order', () => {
mockRandom([0.1, 0.2]);
const actual = [Math.random(), Math.random(), Math.random(), Math.random()];
expect(actual).toEqual([0.1, 0.2, 0.1, 0.2]);
resetMockRandom();
});
});
WARNING: if a no decimal value is passed it will print some warnings during the test.
mockRandomForEach([0.1, 0.2]);
mockRandomForEach([0.1, '0.2']);
mockRandomForEach(['0.2', '0.2']);
mockRandomForEach(0.2);
mockRandomForEach('0.2');
mockRandomForEach('a');
mockRandomForEach(13);
mockRandomForEach({});
mockRandomForEach([]);
mockRandomForEach(['a', 1]);