2017-08-22 3 views
0

Supposons que j'ai une méthode auxiliaire helper.someFn et la méthode de service servMethod qui appelle helper.someFn plusieurs fois. Maintenant, tout en testant servMethod, j'ai bloqué helper.someFn.check nth call dans la méthode Sinon stawbed

// helper.js 
exports.someFn = (param) => { 
    return param + 1; 
} 


// service.spec.js 
describe('Spec',() => { 
    it('first test', (done) => { 
     var someFnStub = sinon.stub(helper, 'someFn', (param) => { 
      return 0; 
     }); 
     // do servMethod call which calls someFn 
     expect(someFnStub.firstCall.calledWith(5)).to.be.true; 

     helper.someFn.restore(); 
     done(); 
    }); 
}); 

Disons que servMethod a appelé helper.someFn 5 fois avec différents param chaque fois. À l'intérieur du test, je peux accéder au premier appel de helper.someFn avec someFnStub.firstCall. Je peux accéder jusqu'au troisième appel de cette manière. Comment puis-je accéder aux prochains appels comme les 4ème ou 5ème appels?

Répondre

1

stub.onFirstCall() est court pour stub.onCall(0), stub.onSecondCall() est court pour stub.onCall(1), etc, donc si vous voulez tester le quatrième appel:

expect(someFnStub.onCall(3).calledWith(5)).to.be.true; 

Documenté ici: http://sinonjs.org/releases/v3.2.1/stubs/#stub-onCall

+0

Il est intéressant que je viens de voir que je me sers une ancienne version de sinon^1.17.7. Et j'ai trouvé le doc pour cela dans http://legacy.sinonjs.org/docs/ Et dans mon cas 'onCall' ne fonctionnait pas, plutôt' getCall' fonctionnait. –

+0

@RazinTanvir étrange, comme les docs indiquent que 'onCall' a été ajouté en 1.8 et que vous utilisez une version plus récente. – robertklep