sinon-as-promised
Sugar methods for using sinon.js stubs with promises.
Installing
$ npm install sinon-as-promised
$ bower install sinon-as-promised
Tagged versions (which Bower uses) include a ./release/sinon-as-promised.js
build that expect sinon to be available as window.sinon
and exposes its method for changing the promise constructor as window.sinonAsPromised
. The normal version in ./src
used by npm expects to be able to require('sinon')
.
Setup
var sinon = require('sinon');
var sinonAsPromised = require('sinon-as-promised');
You'll only need to require sinon-as-promised
once. It attaches the appropriate stubbing functions which will then be available anywhere else you require sinon
. You'll probably want to call it in a setup file that is required before your tests. It defaults to Bluebird, but you can use another promise library if you'd like, as long as it exposes a constructor:
var RSVP = require('rsvp');
var sinonAsPromised = require('sinon-as-promised')(RSVP.Promise);
var sinonAsPromised = require('sinon-as-promised')(Promise);
API
stub.resolves(value)
When called, the stub will return a "thenable" object which will return a promise for the provided value
. Any Promises/A+ compliant library will handle this object properly.
var stub = sinon.stub();
stub.resolves('foo');
stub().then(function (value) {
});
stub.onCall(0).resolves('bar')
stub().then(function (value) {
});
stub.rejects(error)
When called, the stub will return a thenable which will return a reject promise with the provided error
. If error
is a string, it will be set as the message on an Error
object.
stub.rejects(new Error('foo'))().catch(function (error) {
});
stub.rejects('foo')().catch(function (error) {
});
stub.onCall(0).rejects('bar');
stub().catch(function (error) {
});
Examples
License
MIT