Skip to content

Instantly share code, notes, and snippets.

@chrisabrams
Created April 10, 2014 00:40
Show Gist options
  • Save chrisabrams/10333707 to your computer and use it in GitHub Desktop.
Save chrisabrams/10333707 to your computer and use it in GitHub Desktop.
Promises with stubs in Mocha
chai = require('chai')
sinonChai = require('sinon-chai')
chai.use(sinonChai)
sinon = require('sinon')
expect = chai.expect
Q = require('q')
var db = {
query: function(sql) {
d = Q.defer()
d.resolve([{user: 'chris', id: 1}])
return d.promise
}
}
describe('Promise with stubs', function() {
it('should stub a method that returns a promise', function(done) {
querySpy = sinon.stub(db, 'query').returns(Q.resolve([{user: 'derek', id: 2}]))
querySpy('SELECT * FROM users').done(function(result) {
expect(result[0].id).to.be.equal(2)
db.query.restore()
done()
})
})
it('should stub a method (with arguments) that returns a promise', function(done) {
querySpy = sinon.stub(db, 'query').withArgs('SELECT * FROM users').returns(Q.resolve([{user: 'derek', id: 2}]))
querySpy('SELECT * FROM users').done(function(result) {
expect(result[0].id).to.be.equal(2)
db.query.restore()
done()
})
})
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment