2017-02-08 4 views
3

je dois tester cette fonction:Sinon calledWith (nouvelle erreur()) et avec le message exact

//user.js 
function getUser(req,res,next){ 
helper.get_user(param1, param2, (err,file)=>{ 
     if (err) 
      return next(err);} 

ma fonction de test:

it ("failed - helper.get_user throws error",sinon.test(function() { 
    var req,res; 
    var get_user = this.stub(helper,"get_user") 
    get_user.yields(new Error("message")); 
    var next = sinon.spy(next); 
    user.get_user(req,res,next); 
    expect(next).to.have.been.calledWith(new Error("other message")); 

})) 

pour mon affirmation que je utilise sinon-chaï syntaxe. ce test passe même si je m'attends à ce qu'il échoue. car mon code ne lance pas de message avec l'erreur.

Comment puis-je tester qu'une erreur est renvoyée avec le message correct?

+0

Vérifiez si ma réponse est ce que vous recherchez et acceptez-la. Merci. – Danosaure

Répondre

3

Ce que je fais habituellement est:

const next = stub(); 
someMiddleware(req, res, next); 
expect(next).to.have.been.called(); 
const errArg = next.firstCall.args[0]; 
expect(errArg).to.be.instanceof(Error); 
expect(errArg.message).to.equal("Your message"); 

Notez que j'utilise dirty-chai à eslint amical.

HTH,

+0

bonne solution de contournement, merci! –