Jest utility to mock the console
npx @tessl/cli install tessl/npm-jest-mock-console@2.0.0Jest Mock Console is a Jest testing utility that enables developers to mock console methods (log, warn, error) during test execution to prevent console output from cluttering test reports while still allowing verification that console methods were called with expected arguments.
npm install --save-dev jest-mock-consoleimport mockConsole from "jest-mock-console";For CommonJS:
const mockConsole = require("jest-mock-console");With TypeScript types:
import mockConsole, { RestoreConsole } from "jest-mock-console";import mockConsole from "jest-mock-console";
describe("My tests", () => {
it("should mock console output", () => {
const restoreConsole = mockConsole();
console.error("This will not show in test output");
console.log("This will also not show");
expect(console.error).toHaveBeenCalledWith("This will not show in test output");
expect(console.log).toHaveBeenCalledWith("This will also not show");
restoreConsole(); // Restore original console
});
});Jest configuration (jest.config.js):
module.exports = {
setupFilesAfterEnv: ["jest-mock-console/dist/setupTestFramework.js"]
};Then in tests:
import mockConsole from "jest-mock-console";
describe("My tests", () => {
it("should mock console output", () => {
mockConsole(); // No need to call restore function
console.error("This will not show in test output");
expect(console.error).toHaveBeenCalledWith("This will not show in test output");
// Console automatically restored after each test
});
});Jest Mock Console is designed to work with different Jest test runner environments:
The setup test framework provides automatic console restoration by hooking into Jest's test lifecycle:
jasmine.getEnv().describe to inject cleanup hooksdescribe functions and their variants (skip, only, each)beforeEach/afterEach and beforeAll/afterAll hooks for console restorationMain function that mocks console methods and returns a restore function.
/**
* Mock console methods to prevent output during tests
* @param mockArg - Determines which console methods to mock and how
* @returns Function to restore original console
*/
declare function mockConsole(): RestoreConsole;
declare function mockConsole(mockArg: ConsoleProps): RestoreConsole;
declare function mockConsole(mockArg: ConsoleProps[]): RestoreConsole;
declare function mockConsole(mockArg: MockObj): RestoreConsole;
export default mockConsole;
type ConsoleProps = keyof Console;
type MockObj = {[key in ConsoleProps]?: Console[key]};
type RestoreConsole = () => void;Parameter Options:
Usage Examples:
import mockConsole from "jest-mock-console";
// Mock default methods (log, warn, error)
const restore1 = mockConsole();
// Mock only error method
const restore2 = mockConsole("error");
// Mock specific methods
const restore3 = mockConsole(["error", "warn"]);
// Custom implementations
const restore4 = mockConsole({
error: (msg: string) => `Error: ${msg}`,
warn: (msg: string) => `Warning: ${msg}`
});
// Always restore when done
restore1();
restore2();
restore3();
restore4();Automatic console restoration between tests when included in Jest configuration.
Configuration:
// jest.config.js
module.exports = {
setupFilesAfterEnv: ["jest-mock-console/dist/setupTestFramework.js"]
};Features:
it() blocksdescribe, describe.skip, describe.only, and describe.eachbeforeEach/afterEach and beforeAll/afterAll hooks for restorationBehavior:
mockConsole()Since console methods are mocked with jest.fn(), you can use standard Jest assertions:
import mockConsole from "jest-mock-console";
describe("Console verification", () => {
it("should verify console calls", () => {
const restoreConsole = mockConsole();
console.error("Test error message");
console.log("Test log message");
// Verify calls
expect(console.error).toHaveBeenCalledWith("Test error message");
expect(console.error).toHaveBeenCalledTimes(1);
expect(console.log).toHaveBeenCalledWith("Test log message");
// Verify all calls
expect(console.error.mock.calls).toEqual([["Test error message"]]);
restoreConsole();
});
});Complete TypeScript type definitions for the package.
type DefaultConsole = Console;
type ConsoleProps = keyof DefaultConsole;
type MockObj = {[key in ConsoleProps]?: DefaultConsole[key]};
type RestoreConsole = () => void;
declare module 'jest-mock-console' {
export default function MockConsole(): RestoreConsole;
export default function MockConsole(mockArg: ConsoleProps): RestoreConsole;
export default function MockConsole(mockArg: ConsoleProps[]): RestoreConsole;
export default function MockConsole(mockArg: MockObj): RestoreConsole;
}describe("Component with console output", () => {
it("should not clutter test output", () => {
const restoreConsole = mockConsole();
// Component that logs internally
const component = new MyComponent();
component.debugInfo(); // Calls console.log internally
// Test passes without console output
expect(component.isInitialized).toBe(true);
restoreConsole();
});
});describe("Logger component", () => {
it("should log error messages", () => {
const restoreConsole = mockConsole(["error"]);
const logger = new Logger();
logger.error("Something went wrong");
expect(console.error).toHaveBeenCalledWith("Something went wrong");
restoreConsole();
});
});describe("Console redirection", () => {
it("should redirect console to custom handler", () => {
const logs: string[] = [];
const restoreConsole = mockConsole({
log: (msg: string) => logs.push(msg)
});
console.log("Test message");
expect(logs).toEqual(["Test message"]);
restoreConsole();
});
});