Mock
Math.randomwhen run unit test cases with jest, output deterministic random number.
This should only be installed as a development dependency (devDependencies) as it is only designed for testing.
$ npm i --save-dev jest-random-mockUse the only
3 apifor test cases.
mock(): Mocks the Math.random, with deterministic random function.clear(): Shut down the mock system, use original Math.random.createDeterministicRandom(): Return a deterministic random number generator.
Use it in jest env.
import { mock, clear } from "jest-random-mock"; beforeEach(() => { mock(); }); test("your test cases", () => { mock(); const r1 = Math.random(); clear(); mock(); const r2 = Math.random(); clear(); // expect r1 should be same with r2. }); afterEach(() => { clear(); });Use it as a library.
import { createDeterministicRandom } from "jest-random-mock"; const random = createDeterministicRandom(); const v1 = random(); const v2 = random();import { Chart } from "@antv/g2"; import { createDeterministicRandom } from "jest-random-mock"; const random = createDeterministicRandom(); const chart = new Chart({ container: "container", autoFit: true, theme: "academy", }); const flex = chart .spaceFlex() .attr("direction", "row") .attr("ratio", [1, 1, 1]); const TIMES = [100, 1000, 10000]; TIMES.forEach((time) => { const data = new Array(time).fill(0).map(() => ({ v: random() })); flex .rect() .data(data) .encode("x", "v") .encode("color", "steelblue") .transform({ type: "binX", y: "count", thresholds: 10 }) .style("inset", 0.5) .axis("x", { title: false }) .axis("y", { title: `${time} times Radnom` }); }); chart.render();MIT@hustcc.
