Comprendre Sinon.js du rendement(), les rendements(), et callsArg()
Quelle est la différence entre
stub.yield([arg1, arg2, ...])
spy.yields([arg1, arg2, ...])
stub.callsArg(index)
dans le Sinon.js tampon de bibliothèque?
stub.yield()
est la seule que j'ai pu comprendre:
stub = sinon.stub(API, 'call_remote');
callback = sinon.spy();
API.call_remote('help', callback);
@stub.yield( "solution!" );
@stub.calledOnce.should.be.true;
@callback.calledOnce.should.be.true;
@callback.args[0][0].should.eql( "solution!" );
testé avec devrait.js, aurait toutes les affirmations passer.
y a-t-il des tests similaires pour stub.yields()
et stub.callsArg(index)
?
la documentation ne fournit aucune exemples pour clarifier ces deux autres méthodes, mais je suis curieux à leur sujet.
1 réponses
je crois que les méthodes décrites dans la documentation, sont comme suit:
spy.yield
stub.yields
stub.callsArg
La principale différence entre yields
et callsArg
peut être trouvé dans la documentation de sinon pour les rendements:
Si une méthode accepte plus d'un rappel, vous devez utiliser callsArg d'avoir le talon d'appeler d'autres rappels que le premier.
yields
appelez le premier argument de fonction il rencontre avec tous les arguments optionnels que vous lui fournissez. callsArg
va tenter d'invoquer l'argument de la fonction à l' Indice donné dans cet appel arguments
de l'objet, et ne passe pas tous les arguments (vous pouvez utiliser callArgWith
pour ce comportement).
spy.yield
est très similaire à stub.yields
sauf qu'il fait partie de L'API d'espionnage et qu'il appelle tous les callbacks qui lui sont passés.
Voici quelques exemples démontrant les différences (pardonnez-moi si les exemples sont un peu artificiel):
rendements:
var fn = sinon.expectation.create().withArgs(1, 2);
var stub = sinon.stub().yields(1, 2);
stub(fn);
fn.verify();
CallsArg:
var f1 = sinon.expectation.create().never();
var f2 = sinon.expectation.create().once();
var stub = sinon.stub().callsArg(1);
stub(f1, f2);
f1.verify();
f2.verify();
rendement:
var f1 = sinon.expectation.create().once();
var f2 = sinon.expectation.create().once();
var stub = sinon.stub().yield();
stub(f1, f2);
f1.verify();
f2.verify();