Sto scrivendo un test per una vista Backbone per verificare che la funzione di rendering venga chiamata dopo aver recuperato il modello. Il test è:Backbone.js visualizza i test utilizzando Sinon Spies in un browser
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();
}
});
});
sto usando Spies Sinon per collegare un oggetto spia per la funzione di rendering dell'oggetto vista profiloVedi.
La vista è:
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;
}
});
Dopo l'operazione di recupero è chiamato nel test, l'evento di modifica sta sparando e la funzione del render di vista è sempre chiamato, ma la Sinon spia non rileva che la rendono sia essendo chiamato e fallisce.
Come esperimento, ho provato a chiamare la funzione rendering nel test per vedere se la spia identificato:
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 spia rilevato la chiamata è stata fatta nel caso precedente.
Qualcuno sa perché la spia non sta identificando la chiamata di rendering nel mio test iniziale?