Estoy tratando de apuntar un método usando sinon.js pero obtengo el siguiente error:
Uncaught TypeError: Attempted to wrap undefined property sample_pressure as function
También fui a esta pregunta (¿ Stubbing y / o burlarse de una clase en sinon.js? ) Y copié y pegué el código, pero obtengo el mismo error.
Aquí está mi código:
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());
Aquí está el jsFiddle ( http://jsfiddle.net/pebreo/wyg5f/5/ ) para el código anterior y el jsFiddle para la pregunta SO que mencioné ( http://jsfiddle.net/pebreo/9mK5d/1/ ).
Me aseguré de incluir sinon en los recursos externos en jsFiddle e incluso en jQuery 1.9. ¿Qué estoy haciendo mal?
fuente
.returns(0)
ya hace lo mismo que.callFake(() => 0)
.returns
esté en desuso. sinonjs.org/releases/v3.0.0/stubs . @ danday74, proporcione la referencia..stub
con una función cuando se elimina el tercer argumento: github.com/sinonjs/sinon/blob/master/lib/sinon/stub.js#L17 No hay nada de malo en.returns
o.callsFake
, por lo que no hay nada de malo en esta respuesta.La respuesta principal está obsoleta. Ahora deberías usar:
O para métodos estáticos:
O para casos simples, use devoluciones:
O si desea apuntar un método para una instancia:
fuente
sinonjs
es decircallsFake()
, además, para las versiones anteriores, ¿cómo se puede desaprobar?Me encontré con el mismo error al intentar burlarme de un método de una clase CoffeeScript usando Sinon.
Dada una clase como esta:
Puede reemplazar su método con un espía de esta manera:
Simplemente reemplácelo
spy
constub
omock
según sea necesario.Tenga en cuenta que deberá reemplazar
assert.ok
con cualquier afirmación que tenga su marco de prueba.fuente
Gracias a @loganfsmyth por el dato. Pude hacer que el stub funcionara en un método de clase Ember como este:
fuente
Foo.prototype.constructor
, donde está como en la respuesta originalSensor.prototype
. Por otra parte,Foo.prototype.constructor
no funciona para mí. :)