Security News
How Threat Actors are Abusing GitHub’s File Upload Feature to Host Malware
GitHub is susceptible to a CDN flaw that allows attackers to host malware on any public repository.
sinon-with-promise
Advanced tools
Readme
Extend Sinon stubs and spies with promise stubbing methods. This is the extension of Sinon-as-promised.
npm install sinon-with-promise
If you're using sinon-with-promise in the browser and are not using Browserify/Webpack, use 3.x or earlier.
var sinon = require('sinon')
require('sinon-with-promise')
sinon.stub().resolves('foo')().then(function (value) {
assert.equal(value, 'foo')
})
var sinon = require('sinon')
require('sinon-with-promise')
var spy = sinon.spy().resolves('foo')
spy.promised('hello', 'world').then(function (value) {
assert.equal(value, 'foo')
})
assert(spy.firstCall.args[0], 'hello')
assert(spy.firstCall.args[1], 'world')
You'll only need to require sinon-with-promise once. It attaches the appropriate stubbing functions which will then be available anywhere else you require sinon. It defaults to using native ES6 Promise (or provides a polyfill), but you can use another promise library if you'd like, as long as it exposes a constructor:
// Using Bluebird
var Bluebird = require('bluebird')
require('sinon-with-promise')(Bluebird)
stub.resolves(value)
-> stub
Required
Type: any
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) {
// value === 'foo'
});
stub.onCall(0).resolves('bar')
stub().then(function (value) {
// value === 'bar'
});
stub.rejects(err)
-> stub
Required
Type: error
/ string
When called, the stub will return a thenable which will return a reject promise with the provided err
. If err
is a string, it will be set as the message on an Error
object.
stub.rejects(new Error('foo'))().catch(function (error) {
// error.message === 'foo'
});
stub.rejects('foo')().catch(function (error) {
// error.message === 'foo'
});
stub.onCall(0).rejects('bar');
stub().catch(function (error) {
// error.message === 'bar'
});
spy.resolves(value)
-> spy
with promised
functionRequired
Type: any
When called, the spy will return a "thenable" object which will return a promise for the provided value
. Any Promises/A+ compliant library will handle this object properly.
Unlike stub, spy returns the Promise
function by the promised
variable, because the spy
object should be used to do the spy work(checking calls).
var spy1 = sinon.spy().resolves('foo');
function test(spy) {
return spy('hello')
.then(function(value) {
// value === 'foo'
return value
})
}
test(spy1.promised)
.then(function(value) {
// value === 'foo'
assert(spy.firstCall.args[0], 'hello')
})
spy.rejects(err)
-> spy
with promised
functionRequired
Type: error
/ string
When called, the stub will return a thenable which will return a reject promise with the provided err
. If err
is a string, it will be set as the message on an Error
object.
Unlike stub, spy returns the Promise
function by the promised
variable, because the spy
object should be used to do the spy work(checking calls).
// Example with string
var spy1 = sinon.spy().rejects('foo');
function test(spy) {
return spy('hello')
.catch(function(err) {
// err === 'foo'
return 'baz'
})
}
test(spy1.promised)
.then(function(value) {
// value === 'baz'
assert(spy.firstCall.args[0], 'hello')
})
// Example with Error object
var spy2 = sinon.spy().rejects(new Error('bar'))
function test(spy) {
return spy('world')
.catch(function(err) {
// err.message === 'bar'
return 'xab'
})
}
test(spy2.promised)
.then(function(value) {
// value === 'xab'
assert(spy2.firstCall.args[0], 'world')
})
MIT © Ben Drucker
FAQs
Sugar methods for using sinon.js stubs and spies with promises
The npm package sinon-with-promise receives a total of 24 weekly downloads. As such, sinon-with-promise popularity was classified as not popular.
We found that sinon-with-promise demonstrated a not healthy version release cadence and project activity because the last version was released 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.
Security News
GitHub is susceptible to a CDN flaw that allows attackers to host malware on any public repository.
Security News
At Node Congress, Socket CEO Feross Aboukhadijeh uncovers the darker aspects of open source, where applications that rely heavily on third-party dependencies can be exploited in supply chain attacks.
Research
Security News
The Socket Research team found this npm package includes code for collecting sensitive developer information, including your operating system username, Git username, and Git email.