2017-02-09 6 views
2

ここでは、コールバック関数が呼び出されるかどうかを宣言したいと思います。だから私はsinon jsを使ってどうすればいいのですか?提案してください。ノードjsメールジェットメソッド連鎖スタブ

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

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

を私は次のエラーになっています:それはあなたが何postメソッドの戻り値を指定する必要があり、動作しますこれを試してみてください

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

ワー・グール・ナ・ブハバ・ネガール・ナ・ダクラ; P –

答えて

3

を、戻り

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 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();