Я пытаюсь проверить код javascript (BackBone View), используя жасмин
Вот функция в определенном представлении BackBone, которое я пытаюсь проверить:
var aView = Backbone.View.extend({
events: {
'click #btn': 'update'
}
update: function(e){
e.preventDefault();
$.ajax({
....
});
}
});
Итак, чтобы проверить функцию, которую я пытаюсь вызвать, а затем spyOn $.ajax, чтобы узнать, вызван ли он соответствующим URL-адресом. Но проблема в том, что я не могу передать событие в функцию так, чтобы он выполнял ajax.
Здесь блок кода жасмина:
it("tests update ajax", function() {
spyOn($, "ajax");
//Call update function
this.aView.update(this.aView.$("#btn").trigger("click"));
expect($.ajax).toHaveBeenCalled();
});
Здесь ошибка, которую я получаю в настоящее время:
TypeError: Object [object Object] has no method 'preventDefault'
Надеюсь, я предоставил всю необходимую информацию и вопрос точно :)
Вы не должны вызывать метод обновления напрямую. Он будет работать, если вы инициируете событие, которое вызовет метод обновления.
Следующее должно удалить текущую ошибку:
it("tests update ajax", function() {
this.aView.$el.find('.update').trigger("update");
this.aView.update(this.aView.$("#btn").trigger("click"));
});
если ваше мнение имеет следующее:
var aView = Backbone.View.extend({
events: {
'click a.update' : 'update'
},
update: function(e){
e.preventDefault();
$.ajax({
....
});
}
});
При этом вы также проверяете, правильно ли установлены ваши события просмотра.
{'click #btn': 'update'}
поэтому я пытаюсь передать это событие в функцию обновления ... это звучит неправильно, я что-то упустил?this.detailsView.$('#btnSave').trigger("click");