Skip to content

Mock the 'console' (ie log, info, error) for testing

License

Notifications You must be signed in to change notification settings

vanillaes/mock-console

Repository files navigation

Mock-Console

Mock-Console is a small ES module implementation of a console mock. It allows enabling, disabling, and capturing the output of the built-in console methods.

GitHub Release NPM Release Bundlephobia Latest Status Release Status

Discord

Features

  • ECMAScript Module
  • Typescript Compatible

Imports

This package works isomorphically in browser and server-side JavaScript

Browser

Import directly from the local path or a CDN

<script type="module">
import { MockConsole } from 'path/to/mock-console/index.js'
</script>

The minified version can be imported from

<script type="module">
import { MockConsole } from 'path/to/mock-console/index.min.js'
</script>

Node

Install the package

npm install @vanillaes/mock-console

Import using the module path

import { MockConsole } from '@vanillaes/mock-console'

Usage

Creation

const logger = new MockConsole()

Note: The mock is a singleton. Every time new is called on the mock it'll return the same instance

MockConsole.disable()

Disables the built-in console methods (ie log, info, error)

const logger = new MockConsole();
logger.disable();
console.log('This will NOT print to the console');

MockConsole.restore()

Restores the built-in console methods after they've been disabled

const logger = new MockConsole();
logger.disable();
console.log('This will NOT print to the console');
logger.restore();
console.log('This WILL print to the console');
> This WILL print to the console

MockConsole.capture()

Capture is used to store the console output so it can be retrieved later for testing

const logger = new MockConsole();
logger.capture();
console.log('This message will be captured');
logger.restore();
console.log(logger.logs);
> [ 'This message will be captured' ]

Captured logs are stored in an array

  • console.log -> MockConsole.logs[]
  • console.info -> MockConsole.infos[]
  • console.error -> MockConsole.errors[]

MockConsole.flush()

Flush removes all previously captured logs

const logger = new MockConsole();
logger.capture();
console.log('This message will be captured');
logger.restore();
console.log(logger.logs);
> [ 'This message will be captured' ]
logger.flush();
console.log(logger.logs);
> []

Typings

Typings are generated from JSDoc using Typescript. They are 100% compatible with VSCode Intellisense and will work seamlessly with Typescript.