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).returnsesté en desuso. sinonjs.org/releases/v3.0.0/stubs . @ danday74, proporcione la referencia..stubcon 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.returnso.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
sinonjses 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
spyconstubomocksegún sea necesario.Tenga en cuenta que deberá reemplazar
assert.okcon 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.constructorno funciona para mí. :)