2017-02-09 20 views
2

Здесь я хочу утверждать, что функция обратного вызова вызывается или нет. Итак, как я могу это сделать, используя sinon js. Пожалуйста, предложите.Узел js mail jet method chaining stub

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. ;П –

ответ

3

Попробуйте это будет работать, вы должны указать, что после возвращения метода, а затем вернуться и запросить возврат.

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

 Смежные вопросы

  • Нет связанных вопросов^_^