2017-02-09 26 views
2

在這裏,我想斷言回調函數是否被調用。那我怎麼能用sinon js來做。請建議。節點js郵件噴射方法鏈接存根

var send = function (templateId, callback) { 

    const request = mailjet 
     .post("send") 
     .request(params) 
    request 
     .then((result) => { 
      if (typeof callback === 'function') { 
       callback(null, result.body); 
      } 

     }) 
     .catch((err) => { 
      if (typeof callback === 'function') { 
       callback(err, null); 
      } 
     }) 
    } else { 
     callback(err, null); 
    } 
}; 

我已經試過如下:

var mailjetClient = require('../../node_modules/node-mailjet/mailjet-client'); 

sinon.stub(mailjet, 'post').withArgs('send').returns(mailjetClient); 
sinon.stub(mailjetClient, 'request').returns(Promise); 

我收到以下錯誤:

TypeError: Attempted to wrap undefined property request as function 
+0

Wah ghar na bhuva ne ghar na dakla。 ,P –

回答

3

試試這個它會工作,你必須指定什麼POST方法返回,然後返回並要求退貨。

var cb = sinon.spy(); 

    var obj = {successId: 12121}; // Any success response 

    var then = sinon.stub().callsArgWith(0, obj).returns(
     { 
      catch: sinon.stub() 
     } 
    ); 

    var request = sinon.stub().returns(
     { 
      then: then 
     } 
    ); 

    sinon.stub(mailjet, "post",() => { 
     return { 
      request: request 
     }; 
    }); 

    mailSender.send(templateName, cb); 
    sinon.assert.calledOnce(cb); 
    mailjet.post.restore();