J'essaie de stuber une méthode en utilisant sinon.js mais j'obtiens l'erreur suivante:
Uncaught TypeError: Attempted to wrap undefined property sample_pressure as function
Je suis également allé à cette question ( Stubbing et / ou moqueur d'une classe dans sinon.js? ) Et copié et collé le code mais j'obtiens la même erreur.
Voici mon code:
Sensor = (function() {
// A simple Sensor class
// Constructor
function Sensor(pressure) {
this.pressure = pressure;
}
Sensor.prototype.sample_pressure = function() {
return this.pressure;
};
return Sensor;
})();
// Doesn't work
var stub_sens = sinon.stub(Sensor, "sample_pressure").returns(0);
// Doesn't work
var stub_sens = sinon.stub(Sensor, "sample_pressure", function() {return 0});
// Never gets this far
console.log(stub_sens.sample_pressure());
Voici le jsFiddle ( http://jsfiddle.net/pebreo/wyg5f/5/ ) pour le code ci-dessus, et le jsFiddle pour la question SO que j'ai mentionnée ( http://jsfiddle.net/pebreo/9mK5d/1/ ).
Je me suis assuré d'inclure sinon dans les ressources externes de jsFiddle et même de jQuery 1.9. Qu'est-ce que je fais mal?
la source
.returns(0)
fait déjà la même chose que.callFake(() => 0)
.returns
obsolète. sinonjs.org/releases/v3.0.0/stubs . @ danday74, veuillez fournir la référence..stub
avec une fonction comme troisième argument est supprimé: github.com/sinonjs/sinon/blob/master/lib/sinon/stub.js#L17 Il n'y a rien de mal avec.returns
ou.callsFake
, donc il n'y a rien de mal avec cette réponse.La réponse principale est obsolète. Vous devez maintenant utiliser:
Ou pour les méthodes statiques:
Ou pour les cas simples, utilisez simplement les retours:
Ou si vous souhaitez stuber une méthode pour une instance:
la source
sinonjs
c'est- à- dire decallsFake()
plus, pour les versions plus anciennes, comment cela peut-il être désapprouvé?J'ai rencontré la même erreur en essayant de simuler une méthode d'une classe CoffeeScript utilisant Sinon.
Étant donné une classe comme celle-ci:
Vous pouvez remplacer sa méthode par un espion de cette façon:
Remplacez simplement
spy
parstub
oumock
au besoin.Notez que vous devrez remplacer
assert.ok
par n'importe quelle assertion de votre framework de test.la source
Merci à @loganfsmyth pour le tuyau. J'ai pu faire fonctionner le stub sur une méthode de classe Ember comme celle-ci:
la source
Foo.prototype.constructor
, là où comme dans la réponse originale il y aSensor.prototype
. Là encore,Foo.prototype.constructor
ça ne marche pas pour moi. :)