javascript - Sinon spy with a Promise not being called -


the test (below) piece of code failing:

module.exports = function(user, jwt) {   'use strict';    return function(req, res) {     user.create(req.body)     .then(function(id) {       var token = jwt.sign({id: id});        res.json({token: token});     });   }; }; 

here test:

'use strict'; var chai = require('chai'); var sinon = require('sinon'); require('sinon-as-promised');  chai.should(); chai.use(require('sinon-chai'));  describe('routes/signup', function() {    var user;   var request;   var response;   var jwt;   var signup;    beforeeach(function() {     user = {create: sinon.stub()};     request = {body: 'body'};     response = {json: sinon.spy()};     jwt = {sign: sinon.stub().withargs({id:'id'}).returns('token')};     signup = require('../../../routes/signup')(user, jwt);   });    it('returns token when resolving', function() {     user.create.resolves('id');     signup(request, response);     return response.json.should.have.been.calledwith({token: 'token'});   }); }); 

if interrogate response.json method appears have never been called. response.args empty array.

i'm guessing i'm missing fundamental testing promises. help!

remember promises async, need wait until promise resolves , call then method assertions. fr0609's answer give false positive because return before then block ever called.

try this:

it('returns token when resolving', function(done) {    user.create.resolves('id');    signup(request, response)     .then(function() {       response.json.should.have.been.calledwith({token: 'token'});       done();     })     .catch(done); }); 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -