1. jest-mock-process
Easily mock NodeJS process properties in Jest
jest-mock-process
Package: jest-mock-process
Created by: EpicEric
Last modified: Thu, 30 Jun 2022 17:43:09 GMT
Version: 2.0.0
License: MIT
Downloads: 50,827
Repository: https://github.com/EpicEric/jest-mock-process

Install

npm install jest-mock-process
yarn add jest-mock-process

jest-mock-process npm version CircleCI Coverage Status

Easily mock NodeJS process properties in Jest.

Installation

 npm install --save-dev jest-mock-process

Usage

TypeScript example.

 import {
  mockProcessExit,
  mockProcessStdout,
  mockProcessStderr,
  mockProcessUptime,
  mockConsoleLog,
} from "jest-mock-process";

let mockExit = mockProcessExit();
process.exit(1);
expect(mockExit).toHaveBeenCalledWith(1);
mockExit = mockProcessExit(new Error("Mock"));
expect(() => process.exit(0)).toThrowError("Mock");

const mockStdout = mockProcessStdout();
process.stdout.write("Hello, world!");
expect(mockStdout).toHaveBeenCalledWith("Hello, world!");

const mockStderr = mockProcessStderr();
process.stderr.write("Error");
expect(mockStderr).toHaveBeenCalledWith("Error");

const mockUptime = mockProcessUptime(3.14159);
const uptimeValue = process.uptime();
expect(uptimeValue).toEqual(3.14159);

const mockLog = mockConsoleLog();
console.log("Browser log");
expect(mockLog).toHaveBeenCalledWith("Browser log");

mockExit.mockRestore();
mockStdout.mockRestore();
mockStderr.mockRestore();
mockLog.mockRestore();

Advanced usage

  • You can use mockedRun (or asyncMockedRun) to set-up a virtual environment that will automatically create and restore provided mocks:
 import { mockedRun, MockedRunResult } from "jest-mock-process";

const mockRun = mockedRun({
  stdout: mockProcessStdout,
  stderr: mockProcessStderr,
  exit: mockProcessExit,
  log: mockConsoleLog,
});
const mockEnvironment = mockRun(() => {
  process.stdout.write("stdout payload");
  process.stderr.write("stderr payload");
  process.exit(-1);
  console.log("log payload");
  return 10;
});
expect(mockEnvironment.result).toEqual(10);
expect(mockEnvironment.error).toBeUndefined();
expect(mockEnvironment.mocks.stdout).toHaveBeenCalledTimes(1);
expect(mockEnvironment.mocks.log).toHaveBeenCalledWith("log payload");

NOTE: The above is a breaking change in version 2.0.0, as the provided mocks are now limited to the mocks object.

  • You can mock generic methods not supported by default in jest-mock-process with the spyOnImplementing function:
 import { spyOnImplementing } from "jest-mock-process";

const mockStdin = spyOnImplementing(process.stdin, "read", () => "");
process.stdin.read(1024);
expect(mockStdin).toHaveBeenCalledWith(1024);

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code