Skip to content
/ stand-in Public
forked from cjihrig/stand-in

Method replacement and testing utility

License

Notifications You must be signed in to change notification settings

arb/stand-in

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

stand-in

Method replacement and testing utility

build status npm version

Description

Often when unit testing, it is helpful to capture or replace function calls with testing code. stand-in provides a quick and easy way to replace object methods with your own. It also provides a method to restore the original method after testing is complete.

Usage

var standin = require('stand-in');
var assert = require('assert');
var log = standin.replace(console, 'log', function (stand, value) {

  assert.strictEqual(value, 'test data', 'value should equal test data');
  stand.restore();
});

console.log('test data');
  • replace(obj, method, fn) - replaces obj[method] with fn where:
    • obj - object that has the method to replace. Will be used at this pointer inside fn.
    • method - string name of the function to replace.
    • fn - function to replace obj[method] with. The first argument to this function will be a stand-in object. This is helpful if you don't want to create a holding variable.

Returns a stand-in object:

  • restore() - restores the original obj[method] to the previous function. Generally, this will restore the method back to the initial value.
  • original - a handle to the original method in case you need to conditionally call it.

Note

replace tries to prevent users from completely losing a handle to the original method. For example, you will receive an AssertionError if you try to replace console.log twice without first restoreing the function first.

About

Method replacement and testing utility

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%