Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/andfaulkner/kidnap-console

Wrap a function. Capture all its logs, stop them from displaying, and store them for later access along with the return value. Makes console log output testing a breeze.
https://github.com/andfaulkner/kidnap-console

console console-log console-log-testing javascript logging mocha tdd terminal test test-driven-development testing typescript unit-testing

Last synced: 17 days ago
JSON representation

Wrap a function. Capture all its logs, stop them from displaying, and store them for later access along with the return value. Makes console log output testing a breeze.

Awesome Lists containing this project

README

        

# kidnap-console

* Makes console log output testing a breeze.

* Capture log output by wrapping functions that do console calls.
* Stores both of the following from each wrapped function:
* 1) All values that get passed to console.log, console.warn, console.dir, or console.error;
* 2) Return value of the function.
* Prevents log from displaying on the console

## Purpose
* Unit testing of console output
* (None of the existing solutions to this were really working for me)

## Installation

yarn add --dev kidnap-console

Or:

npm install --save-dev kidnap-console

----
## Usage

Example 1:

// You can also import kidnapLogs or kidnapConsole. They are aliases.
import { blockLogOutput } from 'kidnap-console';

const capturedLogs = blockLogOutput(() => console.log('try to log this'));
// [[no output to console occurs]]

console.log(capturedLogs.stores.log);
// => ['try to log this']

Example 2:

function logThings() {
console.dir('hello dir');
console.log('hello log');
console.warn('hello warn');
console.error('hello error');
return 'my return value';
}

const capturedLogs = blockLogOutput(logThings);
// [[no output to console occurs]]

//
// Captures the return value of the function
//
console.log(capturedLogs.result);
// => 'my return value'

console.log(capturedLogs.stores.log);
// => ['hello log']

console.log(capturedLogs.stores.dir);
// => ['hello dir']

console.log(capturedLogs.stores.warn);
// => ['hello warn']

console.log(capturedLogs.stores.error);
// => ['hello error']