
Product
Introducing Webhook Events for Alert Changes
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.
hanbi is a rather small and simple library for stubbing and spying on methods and functions in JavaScript tests.
$ npm i -D hanbi
spy()Creates a single "spy" function to be used as input into some other function.
const spy = hanbi.spy();
window.addEventListener('load', spy.handler);
spy.called; // true once the event fires
stub(fn)Creates a wrapped version of a given function which tracks any calls.
const fn = () => 5;
const stub = hanbi.stub(fn);
stub.handler(); // undefined
stub.called; // true
stubMethod(obj, method)Replaces a given method on an object with a wrapped (stubbed) version of it.
class Foo {
myMethod() {
return 5;
}
}
const instance = new Foo();
const stub = hanbi.stubMethod(instance, 'myMethod');
instance.myMethod(); // undefined
stub.called; // true
restore()Restores all stubs/spies to their original functions.
class Foo {
myMethod() {
return 5;
}
}
const instance = new Foo();
const stub = hanbi.stubMethod(instance, 'myMethod');
instance.myMethod(); // undefined
restore();
instance.myMethod(); // 5
Each of the above mentioned entry points returns a Stub which has
several useful methods.
class Stub {
/**
* Wrapped function
*/
handler;
/**
* Function to be called when stub is restored
*/
restoreCallback;
/**
* Original function
*/
original;
/**
* Whether or not this stub has been called
*/
called;
/**
* List of all calls this stub has received
*/
calls;
/**
* Retrieves an individual call
* @param index Index of the call to retrieve
* @return Call at the specified index
*/
getCall(index);
/**
* Retrieves the first call
* @return Call object
*/
firstCall;
/**
* Retrieves the last call
* @return Call object
*/
lastCall;
/**
* Number of times this stub has been called
*/
callCount;
/**
* Specifies the value this stub should return
* @param val Value to return
*/
returns(val);
/**
* Specifies a function to call to retrieve the return value of this
* stub
* @param fn Function to call
*/
callsFake(fn);
/**
* Enables pass-through, in that the original function is called when
* this stub is called.
*/
passThrough();
/**
* Resets call state (e.g. call count, calls, etc.)
*/
reset();
/**
* Restores this stub.
* This behaviour differs depending on what created the stub.
*/
restore();
/**
* Asserts that the stub was called with a set of arguments
* @param args Arguments to assert for
* @return Whether they were passed or not
*/
calledWith(...args);
/**
* Asserts that the stub returned a given value
* @param val Value to check for
* @return Whether the value was ever returned or not
*/
returned(val);
}
FAQs
A small javascript library for stubbing and spying on methods/functions.
We found that hanbi demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.

Security News
ENISA has become a CVE Program Root, giving the EU a central authority for coordinating vulnerability reporting, disclosure, and cross-border response.

Product
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.