stand-in v4.2.0
stand-in
Method replacement and testing utility
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, path, fn [, options])
- replacesobj[path]
withfn
where:obj
- object that has the method to replace. Will be used atthis
pointer insidefn
.path
- string path to the function to replace. Supports deep paths via "foo.bar.baz".fn
- function to replaceobj[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.options
- an optional object supporting the following properties.startOn
- the invocation number to begin using the replacement function. Defaults to0
.stopAfter
- the final invocation number to use the replacement function. Once this number is reached, thestand-in
object willrestore()
itself. Defaults toInfinity
.
Returns a stand-in
object:
restore()
- restores the originalobj[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.invocations
- the number of times thestand-in
has been called.
replaceOnce()
can be used to create a one time replacement. It is identical to replace()
, except the stopAfter
option will be set automatically to an appropriate value, depending on the value of startOn
.
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 restore
ing the function first.
7 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago