A library for making spies.
var Mi6 = require('mi6');
var spy = Mi6();
spy.returns(25)
// or
spy.calls(function() {
return 25;
});
var spy = Mi6(someFn);
spy.callsThrough();
spy(25);
expect(spy.calledWith(25)).to.be(true);
expect(spy.calledWith()).to.be(25);
expect(spy.called()).to.be(true);
spy();
expect(spy.calledWith()).to.be(undefined);
spy(1, 2, 3);
expect(spy.calledWith()).to.eql([1, 2, 3]);
expect(spy.calledWith(1, 2, 3)).to.be.ok();
expect(spy.callCount()).to.be(2);
Mi6 exposes helpers to overwrite methods on objects, and later restore them.
var Obj = {
fn: function() { }
};
var Mi6 = require('mi6');
var spy = Mi6(Obj, 'fn');
spy.returns(5);
Obj.fn(); // returns 5;
Obj.fn.restore() // Restores fn to original fn
If a spy was created this way, you may later restore the original function on the object by calling spy.restore()
.
Makes a spy call fn
.
var Spy = require('mi6').Spy;
var spy = new Spy();
var called = false;
spy.calls(function() {
called = true;
return 2
});
spy(); // returns 2, called == true;
Makes a spy call the function it was initiantiated with.
var original = function() {
return 5;
};
var spy = new Spy(original);
spy.callsThrough();
spy() == 5; // true
Has a spy return a value rather than call a function.
var spy = new Spy();
spy.returns(5);
spy() == 5; // true
Returns true
if spy has been called, otherwise returns false
.
var spy = new Spy();
spy();
expect(spy.called()).to.be(true);
Returns num
where num is the number of times spy has been called.
var spy = new Spy();
spy();
spy();
spy();
expect(spy.callCount()).to.be(3);
If ...args
is not specified, returns an array of what the spy was called with.
If ...args
is specified, returns true
if the spy was called with those arguments, otherwise it returns false
.
var spy = new Spy();
spy(1);
expect(spy.calledWith()).to.eql([1]);
spy(2, 3);
expect(spy.calledWith(2, 3)).to.be(true);
Resets the states of the spy for things like called
, callCount
and calledWith
.
var spy = new Spy();
spy(1);
spy.reset();
expect(spy.called()).to.be(false);
expect(spy.calledWith()).to.be(undefined);