Estou tentando criar um método de stub usando sinon.js, mas recebo o seguinte erro:
Uncaught TypeError: Attempted to wrap undefined property sample_pressure as function
Eu também fui para esta questão ( Stubbing e / ou mocking uma classe em sinon.js? ) E copiei e colei o código, mas recebo o mesmo erro.
Aqui está o meu 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());
Aqui está o jsFiddle ( http://jsfiddle.net/pebreo/wyg5f/5/ ) para o código acima e o jsFiddle para a questão do SO que mencionei ( http://jsfiddle.net/pebreo/9mK5d/1/ )
Fiz questão de incluir sinon em Recursos externos no jsFiddle e até mesmo no jQuery 1.9. O que estou fazendo de errado?
fonte
.returns(0)
já faz a mesma coisa que.callFake(() => 0)
.returns
está obsoleto. sinonjs.org/releases/v3.0.0/stubs . @ danday74, forneça a referência..stub
com uma função como o terceiro argumento é removido: github.com/sinonjs/sinon/blob/master/lib/sinon/stub.js#L17 Não há nada de errado com.returns
ou.callsFake
, portanto, não há nada de errado com esta resposta.A principal resposta está obsoleta. Agora você deve usar:
Ou para métodos estáticos:
Ou para casos simples, use apenas retornos:
Ou se você deseja criar um método para uma instância:
fonte
sinonjs
ou sejacallsFake()
, para as versões mais antigas, como isso pode ser descontinuado?Encontrei o mesmo erro ao tentar simular um método de uma classe CoffeeScript usando o Sinon.
Dada uma aula como esta:
Você pode substituir seu método por um espião desta forma:
Substitua
spy
porstub
oumock
conforme necessário.Observe que você precisará substituir
assert.ok
por qualquer asserção que sua estrutura de teste tenha.fonte
Obrigado a @loganfsmyth pela dica. Consegui fazer o stub funcionar em um método de classe Ember como este:
fonte
Foo.prototype.constructor
, onde como na resposta original estáSensor.prototype
. Então, novamente,Foo.prototype.constructor
não funciona para mim. :)