2016-09-09 6 views
0

У меня возникли проблемы с пониманием шпионов с моими испытаниями на жасмин.Жасмин ожидал, что функция шпиона была вызвана на backbone.view

Когда я запускаю нижеследующий тест, я могу видеть вывод CLOSE EVENT в моей консоли, но тест triggers close терпит неудачу.

Как правильно написать тест с использованием шпионов?

define([ 
    'backbone' 
], function(Backbone){ 
    describe('TEST', function(){ 
     beforeEach(function(){ 
      this.view = new (Backbone.View.extend({ 
       initialize: function(){ 
        _(this).bindAll('close'); 
        this.$el.append($('<span>', {class: 'closeview'})); 
        $('body').append(this.$el); 
        this.$el.on('click', '.closeview', this.close); 
       }, 
       close: function(){ 
        console.log('CLOSE EVENT'); 
       } 
      })); 
     }); 
     it('exists', function(){ 
      expect(this.view.$el).toBeVisible(); 
     }); 
     it('triggers close', function(){ 
      spyOn(this.view, 'close'); 
      this.view.$el.find('.closeview').trigger('click'); 
      expect(this.view.close).toHaveBeenCalled(); 
     }); 
    }); 
}); 

ответ

1

Когда вы шпионите за функцией, вы на самом деле выполняете метод. Если вы просто хотите проверить, если функция была вызвана, но очень важно, что содержание выполняется, вам нужно добавить:

Попробуйте изменить свой пример:

spyOn(this.view, 'close').and.callThrough(); 

И увидеть, что если поможет вам с вашей проблемой :)

+0

Я пробовал это, и ошибка остается «Ожидаемый шпион, близкий к тому, который был вызван». - любые другие предложения? – minlare

 Смежные вопросы

  • Нет связанных вопросов^_^