Je voudrais retaper someHandler.getStatus
, mais je reçois TypeError: Attempted to wrap getStatus which is already wrapped
..
it('is a test', function() {
sandbox.stub(someHandler, 'getStatus', function(callback) {
callback(null, {
value: 1
});
});
sandbox.stub(someOtherHandler, 'doSomething', function(callback) {
callback(null);
});
sandbox.stub(someHandler, 'getStatus', function(callback) {
callback(null, {
value: 0
});
});
});
Sinon possède une API Nice pour gérer plusieurs appels (stub.onCall (n);) à la même méthode stubbed.
Exemple de stub api doc :
"test should stub method differently on consecutive calls": function () {
var callback = sinon.stub();
callback.onCall(0).returns(1);
callback.onCall(1).returns(2);
callback.returns(3);
callback(); // Returns 1
callback(); // Returns 2
callback(); // All following calls return 3
}
Nous utilisons largement cette approche dans nos tests.
essayez de suivre les appels à l'aide d'une variable externe. la première fois qu'il est appelé, retournez la première valeur et incrémentez le compteur. deuxième appel (et tous les appels suivants), renvoie la deuxième valeur.
it('is a test', function() {
let callCount = 0
sandbox.stub(someHandler, 'getStatus', function(callback) {
callback(null, {
value: callCount++ == 0 ? 1 : 0
});
});
sandbox.stub(someOtherHandler, 'doSomething', function(callback) {
callback(null);
});
});
il s'agit d'un exemple simple pour gérer 2 appels, mais vous le développez pour gérer plusieurs appels si nécessaire.