Estoy escribiendo una prueba para una Vista Backbone para probar que se está llamando a la función de renderización después de obtener el modelo. La prueba es:Backbone.js ver pruebas usando Sinon Spies en un navegador
beforeEach(function() {
$('body').append('<div class="sidebar"></div>');
profileView = new ProfileView();
});
it('should call the render function after the model has been fetched', function (done) {
profileView.model = new UserModel({md5: 'd7263f0d14d66c349016c5eabd4d2b8c'});
var spy = sinon.spy(profileView, 'render');
profileView.model.fetch({
success: function() {
sinon.assert.called(spy);
done();
}
});
});
estoy usando Spies Sinon adjuntar un objeto de espionaje a la función de procesamiento de vista el objeto profileView.
La vista es:
var ProfileView = Backbone.View.extend({
el: '.sidebar'
, template: Hogan.compile(ProfileTemplate)
, model: new UserModel()
, initialize: function() {
this.model.bind('change', this.render, this);
this.model.fetch();
}
, render: function() {
$(this.el).html(this.template.render());
console.log("Profile Rendered");
return this;
}
});
Después de la zona de alcance se llama en la prueba, el evento de cambio está disparando y la función de hacer que la vista está recibiendo llamadas, pero el Sinon espía no está detectando que hacen está siendo llamado y falla.
Como un experimento, he intentado llamar a la función render en la prueba para ver si el espía lo identificó:
it('should call the render function after the model has been fetched', function (done) {
profileView.model = new UserModel({md5: 'd7263f0d14d66c349016c5eabd4d2b8c'});
var spy = sinon.spy(profileView, 'render');
profileView.render();
profileView.model.fetch({
success: function() {
sinon.assert.called(spy);
done();
}
});
});
La espía detectado la llamada se hizo en el caso anterior.
¿Alguien sabe por qué el Spy no identifica la llamada de render en mi prueba inicial?