Eine Klassenmethode mit Sinon.js stubben
Ich versuche stub-Methode verwenden sinon.js aber ich bekomme die folgende Fehlermeldung:
Uncaught TypeError: Attempted to wrap undefined property sample_pressure as function
Ich ging auch zu dieser Frage (Stubbing und/oder Verspottung einer Klasse, in der sinon.js?) und kopiert den code, aber ich bekomme den gleichen Fehler.
Hier ist mein 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());
Hier ist das jsFiddle (http://jsfiddle.net/pebreo/wyg5f/5/) für den obigen code, und der jsFiddle für die Frage ALSO, die ich erwähnt habe (http://jsfiddle.net/pebreo/9mK5d/1/).
Machte ich sicher, dass sinon in der Externe Ressourcen in jsFiddle und auch jQuery 1.9. Was mache ich falsch?
InformationsquelleAutor der Frage Paul | 2014-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Deinem code versucht, stub-Funktion auf
Sensor
aber Sie haben die Funktion aufSensor.prototype
.ist im wesentlichen der gleiche wie dieser:
aber er ist intelligent genug, um zu sehen, dass
Sensor["sample_pressure"]
existiert nicht.Also, was würden Sie tun möchten, ist etwas wie diese:
oder
oder
InformationsquelleAutor der Antwort loganfsmyth
Die top-Antwort ist veraltet. Sollten Sie nun verwenden:
Oder bei statischen Methoden:
Oder für den einfachen Fall verwenden Sie einfach zurück:
Oder, wenn Sie wollen, die stub-Methode für ein Beispiel:
InformationsquelleAutor der Antwort danday74
Dank @loganfsmyth für den Tipp. Ich war in der Lage, um die stub zu arbeiten, die auf einer Ember-Klasse Methode, wie diese:
InformationsquelleAutor der Antwort Scott Nedderman
Lief ich in den gleichen Fehler zu versuchen, zu verhöhnen, eine Methode einer CoffeeScript-Klasse mit Sinon.
Gegeben eine Klasse wie folgt aus:
Kann man ersetzen, seine Methode mit einem Spion so:
Ersetzen Sie einfach
spy
mitstub
odermock
als nötig.Beachten Sie, dass Sie brauchen, um zu ersetzen
assert.ok
mit dem, was Geltendmachung Ihrer Test-framework hat.InformationsquelleAutor der Antwort Nathan Arthur