Sie benötigen sinon Server-Antworten zu emulieren. Diese Bibliothek hat Dienstprogramme wie folgt aus:
this.server.respondWith("GET", "/episode/123",
[200, {"Content-Type": "application/json"},
'{"id":123,"title":"Hollywood - Part 2"}']);
Also, wenn Sie ein Modell mit der Wurzel Folge haben und ID 123, wird sinon diese Rückkehr auf einen Anruf holen.
dies lesen: http://tinnedfruit.com/2011/03/03/testing-backbone-apps-with-jasmine-sinon.html
aktualisieren: eine zweite Problemumgehung als Fragesteller Anfrage hinzufügen. Spott Methode speichern.
// Verwenden Sie diese in Ihren Tests statt Backbone.js Modell
var ExtendedModel = Backbone.Model.extend({
//mocked save:
save : function(data, options){
if(data){
this.set(data);
}
var mocked = this.toJSON();
if(!mocked.id){
mocked.id = new Date().getTime();
}
mocked = this.parse(mocked);
if(options.success){
options.success(this);
}
if(options.error){
options.error(this);
}
}
});
var MyModel = ExtendedModel.extend({
});
aber ich bin immer noch vorschlagen, dass Sie Sinon verwenden. Mocking der Backbone.js ist nicht elegant und unterstützt auch Header-Response-Codes und andere Sachen ist auch komplexer und eine Art neu erfinden das Rad. Während mit Sinon müssen Sie nur die Bibliothek hinzufügen eine Serverantwort erstellen.
ich verwende die folgende Technologien backbone.js, require.js, jquery, Restdienste über WebAPI. Von Jasmin verspotte ich das Modellobjekt und verbinde es mit einer Ansicht für Unit-Tests. wenn ich die Antwort von der Ansicht auf das Scheinmodell erhalte, wie man die Save (Erfolg, Fehler) -Antworten des Modells einteilt. Gibt es keine Möglichkeit, die Modellantworten ohne Sinon zu testen? – Gururaj
Sinon ist nur andere JavaScript-Bibliothek, nicht sicher, warum Sie es nicht hinzufügen können. Eine andere Möglichkeit besteht jedoch darin, die Speichermethode zu überschreiben. Ich werde diese Problemumgehung in meiner Antwort hinzufügen. –