##Spies
//Anonymous function
var spy = sinon.spy();
//Provided Function
var spy = sinon.spy(myFunc);
//Existing object and function
var spy = sinon.spy(object, "method");
//Pass the spy as a function
PubSub.subscribe("message", spy);
//Spy on existing function
sinon.spy(jQuery, "ajax");
//Use function
jQuery.getJSON("/some/resource");
//Assert
expect(jQuery.ajax).to.have.been.called;
//Restore afterwards
jQuery.ajax.restore();
Test stubs are functions (spies) with pre-programmed behavior.
//Anonymous stub
var stub = sinon.stub();
//Replaces object.method with a stub function
var stub = sinon.stub(object, "method", func);
//Restore original method
stub.restore();
//Stub a whole object
var stub = sinon.stub(obj);
Instead of
sinon.assertCalledWith(mySpy, "foo");
call
expect(mySpy).to.have.been.calledWith("foo");
| Sinon Syntax | Sinon-Chai Assertion |
|---|---|
| called | expect(spy).to.have.been.called |
| calledOnce | expect(spy).to.have.been.calledOnce |
| calledTwice | expect(spy).to.have.been.calledTwice |
| calledThrice | expect(spy).to.have.been.calledThrice |
| calledBefore | expect(spy1).to.have.been.calledBefore(spy2) |
| calledAfter | expect(spy1).have.been.calledAfter(spy2) |
| calledWithNew | expect(spy).to.have.been.calledWithNew |
| alwaysCalledWithNew | expect(spy).to.always.have.been.calledWithNew |
| calledOn | expect(spy).to.have.been.calledOn(context) |
| alwaysCalledOn | expect(spy).to.always.have.been.calledOn(context) |
| calledWith | expect(spy).to.have.been.calledWith(...args) |
| alwaysCalledWith | expect(spy).to.always.have.been.calledWith(...args) |
| calledWithExactly | expect(spy).to.have.been.calledWithExactly(...args) |
| alwaysCalledWithExactly | expect(spy).to.always.have.been.calledWithExactly(...args) |
| calledWithMatch | expect(spy).to.have.been.calledWithMatch(...args) |
| alwaysCalledWithMatch | expect(spy).to.always.have.been.calledWithMatch(...args) |
| returned | expect(spy).to.have.returned(returnVal) |
| alwaysReturned | expect(spy).to.have.always.returned(returnVal) |
| threw | expect(spy).to.have.thrown(errorObjOrErrorTypeStringOrNothing) |
| alwaysThrew | expect(spy).to.have.always.thrown(errorObjOrErrorTypeStringOrNothing) |